我目前正在从事一个项目,该项目整合了许多工作簿中的信息。尽管所使用的应用程序的第一个版本Select
,并Activate
广泛,从信息我已经看到在这个网站中,使用这些方法,应尽量避免使用。因此,我目前正在重新编写代码以尽可能消除这些问题。
我正在使用的工作簿有一个参考表,它是VeryHidden。为了参考此工作表,我在第一个模块的开头做了一些公开声明。其中之一是
Public refsheet as Worksheet
请注意,打开工作簿后,可能无法使用该模块。
问题1:如果我不使用此模块中定义的公共变量,这会引起问题吗?如果确实引起问题,那么应该在哪里定义这些公共变量?
在这种情况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;未设置对象变量或带块变量。
我的建议是:完全删除该公共变量-Workbook_Open shenanigan。为什么根本需要此refsheet
变量?你可能不知道。公共变量并不总是一个坏主意。他们通常是一个坏主意。
只需通过Name
或引用表格即可CodeName
。例子:
Worksheets("References").Range("A1").Value = "Hello world!" ' Name is "References"
shtReferences.Range("A2").Value = "Hello world!" ' CodeName is shtReferences
第二个示例假定您shtReferences
在“属性”窗口的顶行中将工作表的CodeName更改(Name)
为,如下面的示例所示。这是我最喜欢的引用工作表的方式,因为它可以防止用户Name
在工作表选项卡中更改工作表的情况。
当心:(Name)
代表CodeName
,这与Name
没有括号的情况有所不同!我知道,这有点令人困惑。
请注意,CodeName
床单是,默认情况下Sheet1
,Sheet2
...添加到混乱的事实,Name
张也Sheet1
,Sheet2
等在默认情况下。但是Name
和CodeName
/(Name)
不链接,可以独立更改。
MsgBox shtReferences.Name ' returns "References"
MsgBox shtReferences.CodeName ' returns "shtReferences"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句