我在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。
答案 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