VBA:在从另一个模块调用sub时尝试保留定义的变量

时间:2017-03-17 17:58:41

标签: vba variables module

我在Module1中有一个Sub1,它定义了Variable1。在Module1中,我公开声明了Variable1。在Sub1中,我在定义Variable1之后调用单独的Sub,Sub2。 Sub2在Module2中。在Module2中,我还公开声明了Variable1。

我尝试运行Sub1时遇到错误:

  

运行时错误' 91':

     

对象变量或未设置块变量

我已经测试了这个,将Sub2放在Module1中,然后Sub1正确运行。我该怎么做才能将Sub2保留在自己的模块中并仍然保持set变量?谢谢。

编辑:对不起,我会尝试编写一个示例代码,因为实际的代码比我在这里谈论的内容要复杂得多,并且包含识别信息。

第1单元

Public ws1 As Worksheet


Sub1()
Set ws1 = ThisWorkbook.Sheets(1)
Call Sub2()
End Sub



第2单元

Public ws1 As Worksheet


Sub2()
ws1.Activate
End Sub





它位于Sub2中的 ws1.Activate ,我得到运行时错误' 91'。似乎VBA丢失了在父Sub1中设置的已定义的ws1。

1 个答案:

答案 0 :(得分:0)

我在这里发帖,因为它太长了,不能作为评论。

第1单元

Option Explicit

Public ws1 As Worksheet

Sub Sub1()

Set ws1 = ThisWorkbook.Sheets(1)
Sub2

End Sub

第2单元

Sub Sub2()

' add this line to debug, when you type Module3 you will get 
' all variable within Module 3
Debug.Print Module3.ws1.Name
ws1.Activate

End Sub