RunTime Error 91 Object variable or With block variable not set - Use of Public Variables
我目前正在开展一个项目,该项目整合了来自多个工作簿的信息。虽然应用程序的第一个版本广泛使用了
我使用的工作簿有一个非常隐藏的参考表。为了参考这张表,我在第一个模块的开头做了一些公开声明;其中之一是
1 | Public refsheet as Worksheet |
请注意,打开工作簿后可能无法使用此模块。
问题 1:如果我在此模块中定义了未使用的公共变量,这是否会导致问题?如果确实导致问题,应该在哪里定义这些公共变量?
在
1 2 3 4 5 6 7 8 9 10 11 | Private Sub Workbook_Open() Set refsheet = Sheets("References") Set corang = Sheets("Consolidation").Range("L2:AI2") Application.ScreenUpdating = False refsheet.Visible = xlSheetVeryHidden Application.ScreenUpdating = True End Sub |
问题 2:如果我在 Workbook_Open() 子中设置了 refsheet,鉴于它已被定义为公共变量,它是否可以在所有其他模块中使用?
当我在使用后第一次运行代码时,第一次使用 refsheet 没问题,之后任何时候使用 refsheet,我都会收到运行时错误 91;未设置对象变量或 With 块变量。
我的建议是:完全放弃该公共变量 - Workbook_Open 恶作剧。为什么你需要这个
只需通过
1 2 | Worksheets("References").Range("A1").Value ="Hello world!" ' Name is"References" shtReferences.Range("A2").Value ="Hello world!" ' CodeName is shtReferences |
第二个假设您在"属性"窗口的顶行
注意:
请注意,默认情况下,工作表的
1 2 | MsgBox shtReferences.Name ' returns"References" MsgBox shtReferences.CodeName ' returns"shtReferences" |
我认为发生了其他事情。我把它放在工作簿代码区:
1 2 3 4 | Private Sub Workbook_Open() Set MySheet = Sheets("xxx") MySheet.Visible = xlSheetVeryHidden End Sub |
我把它放在一个标准模块中:
1 2 3 4 5 | Public MySheet As Worksheet Sub MAIN() MsgBox MySheet.Name End Sub |
重新打开文件后,我通过运行 MAIN 得到了预期的结果。
在新的工作簿中试试这个,看看你是否复制了我所看到的。