这就是我在" ThisWorkbook"模块:
Option Explicit
Public wbReport As Workbook
Private Sub Workbook_Open()
Set wbReport = ActiveWorkbook
End Sub
我在与cetain工作表对应的模块中有以下宏,我希望它在某些单元格的值发生变化时激活:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = wbReport.Range("inspection_number")
etc.
.
.
.
End Sub
但是,当激活此宏时,我会收到运行时错误' 424'好像从未建立过wbReport全局变量。
有什么建议吗?
答案 0 :(得分:0)
<li ng-repeat="n in numbers | limitTo:numLimit">{{n}}</li>
必须可用作对象。当您运行wbReport
时,请事先运行Worksheet_Change()
吗?错误消息表明没有。 Locals窗口也可用于查找:设置断点并查看Set wbReport = ActiveWorkbook
是否为对象。如果没有,找到一种方法是这样的。您可以使用wbReport
来做到这一点,但您必须使用Workbook_Open()
代替public
。
private
不要调用该函数,而是简单地使用它的一行代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Call Workbook_Open()
'' the Call keyword is optional, I find it adds clarity.
Dim KeyCells As Range
Set KeyCells = wbReport.Range("inspection_number")
etc.
我认为你来自面向对象的背景,其中模块将包含其方法,而一些将被隐式调用。 (我不是,所以我的描述性措辞可能不正确。)这使你的方法有点形式化。这对你很有帮助;在这种情况下,也许是一个不必要的层。