【发布时间】:2021-02-02 03:29:22
【问题描述】:
我在调用另一个模块时遇到问题(运行时错误“424”:需要对象)。我有 2 个模块,模块 1 和模块 2。下面是模块 1 中的代码:
Private Sub test()
Dim Work As Worksheet: Set work= Sheets("S_BDN")
For i = 1 To 2
Set f = work.Range("A5", work.Range("A5").End(xlDown))
Set a = f.Find(i, LookIn:=xlValues)
If a.Offset(0, 10).Value = "January" Then
Call Module3.Proceed_B
End If
Next i
End Sub
下面是模块 2 中的代码:
sub Module3.Proceed_B()
If a.Offset(0, 6).Value = "A" Then
Debug.Print a.Offset(0, 4).Value
else
Debug.Print a.Offset(0, 5).Value
end if
end sub
非常感谢所有帮助。谢谢。
【问题讨论】:
-
首先在每个模块的顶部添加
Option Explicit,声明所有变量,然后从过程名称和调用中删除Module3。 -
然后阅读 VBA 中的变量范围 - 例如参见 excel-easy.com/vba/examples/variable-scope.html
-
非常感谢@TimWilliams,错误已解决,但还有另一个问题,模块 2 中的结果 "Debug.Print a.Offset(0, 4).Value" 出现2 个数据但相同的数据不是不同的数据,我尝试在同一模块(模块 1)中将“调用 Module3.Proceed_B”替换为“Debug.Print a.Offset(0, 4).Value”,它有效,我的意思是,结果是 2 个数据并且不同。还是我的循环出错了?