我是一位在Excel环境下学习VBA的3周新手(在我30年前在Pascal上完最后一门编程课程之后)。我不明白为什么有时执行一些代码引用表单需要激活表单。我的具体问题,通过一些玩具代码:需要Excel VBA表单激活吗?
Public Sub Test()
Dim Rng As Range
Set Rng = Worksheets("Sheet2").Range(Cells(1, 1), Cells(5, 1)).Find(What:="Prize",LookIn:=xlValues)
If Rng Is Nothing Then
MsgBox "Nothing there"
Else
MsgBox "Found the prize"
End If
End Sub
如果我把测试(),而Sheet1中是有效的(通过在Sheet1用户窗体说)我得到一个“定义或对象定义的错误应用”。如果Sheet2处于活动状态,代码将正常运行。
为什么Sheet2必须处于活动状态才能执行此代码?我可以通过激活Sub2内的Sheet2然后再次激活Sheet 1来解决这个问题,但这看起来很笨拙。有没有更好的办法?
感谢您的帮助!我在我的实际代码中遇到了类似这样的其他激活问题。
'细胞()'没有工作预选赛总是指ActiveSheet。你需要使用'Worksheets(“Sheet2”)。Cells(...)' –