一个模块不会看到公共variables

对不起,有什么不对了
标准模块:

Public ws1 As Worksheet Public rCopy As Range 

Workbook_Open:

 Set ws1 = Sheets("abc") Set rCopy = ws1.Range("A1") 

第三模块:

 ws1.Select ' Error rCopy.Select ' Error 

请帮忙。

您发布的代码确实有效。

你可能会得到一个错误的一个原因是,如果你一直在debugging你的代码,并在某个时候出现错误,并停止excution,公共variables将不再被设置。 您只需再次运行Workbook_Open子项(可以使用F5从IDE运行它)

请注意,你应该从你最后一个问题的build议,并使用Set ws1 = Thisworkbook.Sheets("abc") 。 如果你不这样做,运行ws1将被设置为另一个工作簿中的abc的风险,因为如同写入它相当于Set ws1 = ActiveWorkbook.Sheets("abc")

如果第三个模块中的代码由于Workbook_Open 之后发生的某些事件而未被调用,则这两个variables仍未初始化。

那么私人会员和财产呢?

 Option Explicit Private m_mySheet As Worksheet Private m_myRange As Range Public Property Get MySheet() As Worksheet If (m_mySheet Is Nothing) Then Set m_mySheet = ThisWorkbook.Worksheets("abc") End If Set MySheet = m_mySheet End Property Public Property Get MyRange() As Range If (m_myRange Is Nothing) Then Set m_myRange = MySheet.Range("A1") End If Set MyRange = m_myRange End Property Option Explicit Sub test() Debug.Print MyRange.Address End Sub