我正在从C# dll中定义的excel中的VBA脚本实例化一个COM对象。我实例化的C#类有一个终结器,它执行垃圾收集,特别是它引用的其他MS Office对象,我应该看到这些对象在任务管理器中出现和消失。事实上,单元测试表明,当调用dll时,Office进程会出现,当它完成时,Office进程会消失。
当从VBA调用dll时,我注意到进程在VBA函数结束后仍保持打开状态,即对象在被调用后未被清除,这使我相信VBA不会释放COM对象。
我的函数看起来像这样:
Function Raz(inp As String)
Dim o: Set o = CreateObject("foo.ba
有人知道如何使用下面的VBA代码在Outlook中设置会议时包括团队会议吗?
下面是我的代码:
Sub setmeeting()
Dim O As Outlook.Application
Dim OAPT As Outlook.AppointmentItem
Set O = New Outlook.Application
Set OAPT = O.CreateItem(olAppointmentItem)
OAPT.MeetingStatus = olMeeting
With OAPT
.RequiredAtt
我是VBA新手,需要帮助。我想创建vba函数,它接受表名作为输入,并从该表中区分特定的字段。我创建了一个函数,当我在vba即时窗口中运行它时(当我使用debug.print命令显示结果时)。但是当我在sql中调用这个函数时,它只返回最后一个字段值,而不是整个字段的值。我不擅长vba语法,所以我需要帮助来理解。函数可以返回多个值吗?如果可以,如何使用,如果不可以,还可以使用什么?下面是我的代码:
Public Function TableInfo(tabela As String)
Dim db As Database
Dim rec As Recordset
Dim polje1 As Fie
当我运行另一个VBA时,我的VBA代码停止运行。我创建计数计时器与3个按钮,启动,停止,重置加上显示当前时间(所有的VBA),我需要15列与此重复。当我单击Button1(开始计数时间)或另一个(无matther)时,问题就开始了--它停止了其他我的代码(当前时间,以及计数时间的开始、停止、重置按钮)--只工作在运行代码之后首先单击的按钮。如何运行多个VBA代码,这些代码一起工作,不相互干扰。对不起,我的英语。我的VBA开始,停止,重置。
Public StopIt As Boolean
Public ResetIt As Boolean
Public LastTime
Private Sub
我有一个VBA子程序,在电子表格中绘制一些形状,并移动它们。这就是我的子程序所说的
Sub Assignment(amplitude As Double, deltaphase As Double)
我从一个表单中获取我的振幅和增量值。在我的表单中有三个按钮“开始”、“暂停”、“继续”。
我知道如何编写“开始”按钮。
Private Sub start_Click()
Dim formAmplitude As Double
Dim formPhase As Double
formAmplitude = assignmentform.ampbox.value
formPhase = assi
我正在处理excel VBA中的一些公式,我试图让它循环一定的次数。在VBA中可以这样做吗?如果可以,我该如何做?
我的代码如下:
Sub move()
If ActiveCell.Offset(0, -1) = ActiveCell.Offset(1, -1) Then
ActiveCell.Formula = "1"
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub
我需要检查从C7 (C7、D7、E7等)开始的第7行中的每个单元格,并找到一个包含特定日期(例如,字符串"6/30/2017至9/30/2017“中的" 9/30/2017”)的字符串值的单元格,并将所有列从C列删除到单元格所在的任何列。我将如何使用VBA代码来做到这一点?我是VBA的新手,我已经尝试了我所能找到的一切。感谢你的建议
我的代码:
Sub DeleteUnnecessaryColumns(specifiedWorksheet)
Dim lastCol As Long
lastCol = Cells.Find(What:="*", After:
我试图从动态数组中调用一个值,以便稍后在VBA函数中使用,但如果不抛出一个数组,则无法调用它。这里怎么了?
我试图更改数组类型和调用方法,但错误不断出现。
Dim lastColumn As Integer
Dim defaultWidth As Double
defaultWidth = 8.11
lastColumn = 30
'Declare array for column width
Dim widthArray() As Double
ReDim widthArray(lastColumn)
For c = 1 To lastColumn
widthArra
我坚持用VBA编写VLookup的正确语法,在VBA中要返回多个列。
通常,您使用{2,3,4,5},但是VBA不认为这是有效的。
Set Sheet1 = ActiveWorkbook.Sheets(1)
Set Sheet2 = ActiveWorkbook.Sheets(2)
Set Sheet3 = ActiveWorkbook.Sheets(2)
result = Application.WorksheetFunction.VLookup(Sheet2.Range("A2"), Sheet1.Range("AA9:AF20"), {2,3,5,6,7
我希望这个简单的VBA能够默默地处理所有10个错误,但出于某种原因,只有第一个错误是默默地处理的:
Public Sub HandleError()
For i = 1 To 10
On Error GoTo Continue
ThrowError
Continue:
Err.Clear
Next i
End Sub
Public Sub ThrowError()
Err.Raise vbObjectError + 1000
End Sub
这是上述代码的正确行为吗?或者这是VBA中的一个bug?
我是通过VBA进行新编程的;目前,我已经为单个行-列创建了单个宏;在本例中,我为行"2“和列"M2:BF2”创建了一个宏,但我需要这个宏命令来遍历接下来的320行,而我不知道该如何操作。这是我的命令: enter image description here 如果有任何建议或指导,我将不胜感激。 对每个人都是最好的 豪尔赫
VBA如何发送回车键执行Web?当在Web中输入"5904“时,则需要在键盘上手动按"ENTER”。那么VBA如何在web上自动按下它呢?
Public Sub Web()
Dim ie As New InternetExplorer
With ie
.Visible = True
.Navigate2 "https://www.tpex.org.tw/web/stock/statistics/monthly/st44.php?l=zh-tw"
While .Busy Or .readyState < 4: DoEvents: Wend
Set ti
我希望在指定表的每一行中执行目标搜索。下面的VBA代码成功执行了GoalSeek。 Sub GoalSeek()
Dim lo As ListObject
Dim rw
Set lo = Sheet1.ListObjects("Table1")
For rw = lo.DataBodyRange.Rows.Count To 1 Step -1
Range("M" & rw).GoalSeek Goal:=Range("N" & rw).Value, ChangingCell:=Range("E" &
我希望使用Excel宏启动在后台运行的python脚本。
我必须能够指定它使用系统路径(我不想假设python是在哪里安装的)以及一个特定的工作目录,在那里它会找到它需要的其他文件。
目前,我使用以下内容,但这会阻止Excel进程直到完成为止。
Sub RunPython()
shellScript = "python Daily.py"
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
wsh.CurrentDirectory = Application.
我有一个定期运行的VBA脚本。根据不同的时基,它运行不同的模块。我遇到的一个问题是,模块似乎过早退出了,这是我以前没有经历过的。这让我开始质疑我的方法。我的理解是,无论模块在什么情况下运行,module.sub都不会结束或退出,直到它结束或退出。我说错了吗?
Private Sub tmr1Sec_Change()
timeBase = seconds Mod 5 'Set a 4 second time base
Select Case timeBase
Case 1 To 2
errorPosition
我有一个包含大量值的电子表格和一个button.In --代码按钮--我有下面的VBA代码
If Range("N2").Value = "100" Then
Rows ("2:2").Select
Selection.Delete
End if
如果将100放在该行中,那么该行将是deleted.But --如果我有很多行,显然会出现问题,这将意味着"IFs“的负载--我的问题是,是否可以通过loop.So来完成这一任务?如果满足了条件,那么row将是deleted.In,如果我必须指定所选的行,那么循环将如何做到这一点呢?任何帮助都
我是编程新手,所以我希望你能帮助我。不确定如何表达正确的问题,所以我没有找到任何StackOverflow答案。
当我单步执行这段代码并转到OpcServObj.Connect OpcServerStrg时,它没有连接。我没有收到任何错误,似乎什么也没有发生。光标跳到左边距,不执行任何操作。只有当我继续单步执行该例程时,它才会再次启动该函数。它应该继续并退出for循环,我计划在该循环中再次测试连接的状态。
参考库: OPC DA自动化包装器2.02
Sub Main()
ConnectOPC
End Sub
Private Function ConnectOPC() As Boolean
我很难将内置的Excel函数传递给一个单元格。它一直在返回"Run-time error '1004': Application-defined or object-defined error".
基本上,我要做的是使用VBA创建一个平均/平均的动态演算。
With Sheets("TC7_DATA")
LastColumn = .Cells(4, Columns.Count).End(xlToLeft).Column
For i = 1 To Rows.Count
If (.Cells(i, 3).Value =
如何将输入框中的用户输入限制为字母、数字和字符‘-’?我尝试了以下代码。
For I = 1 To Len(UserInput)
If VBA.Asc(VBA.Mid(UserInput, I, 1)) >= 65 And VBA.Asc(VBA.Mid(UserInput, I, 1)) <= 90 Or VBA.Asc(VBA.Mid(UserInput, I, 1)) >= 0 And VBA.Asc(VBA.Mid(UserInput, I, 1)) <= 9 Or VBA.Asc(VBA.Mid(UserInput, I, 1)) = 45
我很少有使用VBA的经验,但有其他编程经验。我有一个循环,它将正确的数据写入正确的位置。但是,循环后的代码尚未完成。我相信我没有正确地结束循环,但还没有找到如何结束它。
Dim i As Integer
Dim j As Integer
Dim TestInfo, PatID, TestCode, OAValue As String
For i = 2 To 25
Columns(i).Select
If Cells(1, i).Value = 0 Then
End
Else
For j = 2 To 52
R
我使用VBA将信息输出到一个Excel工作表中,该工作表是从名为"PHB“的Server数据库中收集的。我可以通过调用一个视图连接到数据库并提取信息。
当我将数据转储到Excel工作表中时,会包含数据库数据的列标题,我不想这样做。我必须使用偏移量来使数据看起来正确。我可以使用VBA操作结果工作表并删除列。如果有一些开关,我可以使用任何一个(VBA或T)终端,这似乎是一个更干净和更简单的方法。
以下是我的逻辑的相关部分:
Public Sub Show_ProductCode()
Dim PHB_cnn As Ne
我对VBA很陌生,我试图通过for循环将值添加到数组中,但我似乎无法让它添加任何值。它不会抛出任何错误,它只是没有任何结果。我现在拥有的是:
Dim i As Long
Dim results() As Long
ReDim results(1 To 6)
For i = 1 To i = 6
results(i) = 1
Next i
MsgBox results(1)
不管发生什么,消息框都是零。如果你能提供任何帮助,我们将不胜感激。
因此,我对VBA ()完全没有经验。
基本上,我有通过字典运行的代码,并从它们中删除某些元素。下面是一个快速示例(不在生产代码中):
Dim testDict As New Scripting.Dictionary
testDict.Add 1, 5
testDict.Add 2, 10
testDict.Add 3, 15
testDict.Add 4, 20
testDict.Add 5, 25
testDict.Add 6, 30
Dim Key As Variant
For Each Key In testDict.Keys()
If testDict.Item(Key)