我目前正在开展一个项目,该项目整合了许多工作簿中的信息。虽然应用程序的第一个版本使用Select
and Activate
从我在本网站上看到的信息来看,应该尽可能避免使用这些方法。因此,我目前正在重新修改代码以尽可能消除这些问题。
我正在使用的工作簿有一个非常隐藏的参考表。为了引用本表,我在第一个模块开始时做了一些公开声明;其中之一是
Public refsheet as Worksheet
请注意,打开工作簿后可能无法使用此模块。
问题1:如果我在该模块中定义了未使用的公共变量,这会导致问题吗?如果确实引起问题,这些公共变量应该在哪里定义?
In the Workbook_Open()
事件,我有以下内容:
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 恶作剧。为什么你需要这个refsheet
有变量吗?你可能不知道。公共变量不是always一个坏主意;他们只是usually是个坏主意。
只需按其参考表即可Name
,或由其CodeName
。例子:
Worksheets("References").Range("A1").Value = "Hello world!" ' Name is "References"
shtReferences.Range("A2").Value = "Hello world!" ' CodeName is shtReferences
第二个假设您将工作表的 CodeName 更改为shtReferences
在“属性”窗口的顶行(Name)
,如下例所示。这是我最喜欢的引用工作表的方式,因为它可以防止用户更改工作表的情况Name
工作表选项卡中的工作表。
Beware: (Name)
代表CodeName
,这不同于Name
没有括号!我知道,有点令人困惑。
请注意,CodeName
默认情况下,工作表的数量是Sheet1
, Sheet2
, ... 更令人困惑的是,Name
床单数量也是Sheet1
, Sheet2
等默认情况下。但Name
and CodeName
/(Name)
不链接并且可以独立更改。
MsgBox shtReferences.Name ' returns "References"
MsgBox shtReferences.CodeName ' returns "shtReferences"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)