我正在尝试学习一些VBA,在我当前的项目中,我想学习使用不同的子程序,所以我创建了一个子来打开一个CSV文件。我希望能够在其他子例程中引用工作簿/工作表,因此我将变量定义为public。这在它自己的工作正常,消息框显示bankWS和bankWS的预期值
Public bankWB As Workbook
Public bankWS As Worksheet
Sub OpenCSV()
filepath = "C:\"
csvfile = "file.csv"
Workbooks.Open Filename:=filepath & csvfile
Set bankWB = ActiveWorkbook
Set bankWS = ActiveSheet
MsgBox "Active WB is " & bankWB.Name & " Active WS is " & bankWS.Name
End Sub
但是当我尝试从不同的子引用这些变量时,我得到运行时错误438对象不支持此属性或方法。
Sub Main()
Call OpenCSV
MsgBox "Active WB is " & bankWB
MsgBox " Active WS is " & bankWS
End Sub
我认为全局定义变量的全部意义在于我可以在子例程之外使用它。
阅读此错误我发现,当代码尝试使用特定对象(例如worksheet.something)时,通常会发生这种情况,但我认为我复制了在sub中工作正常的msgbox命令。我现在被困住了,无法找出我做错了什么。我想明白,为什么会出现这种错误?
此致
答案 0 :(得分:0)
Sub Main()
Call OpenCSV
MsgBox "Active WB is " & bankWB.Name
MsgBox " Active WS is " & bankWS.Name
End Sub