Excel / VBA为什么我使用工作簿和工作表的公共变量获得运行时错误438

时间:2015-02-17 17:25:07

标签: excel vba excel-vba

我正在尝试学习一些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命令。我现在被困住了,无法找出我做错了什么。我想明白,为什么会出现这种错误?

此致

1 个答案:

答案 0 :(得分:0)

Sub Main()
Call OpenCSV
MsgBox "Active WB is " & bankWB.Name
MsgBox " Active WS is " & bankWS.Name
End Sub