請問,什麼是錯的再次
標準模塊:A模塊不看公共變量
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
請幫幫我。
請問,什麼是錯的再次
標準模塊:A模塊不看公共變量
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
請幫幫我。
您發佈的代碼的確是的工作。
你可能會遇到一個錯誤的一個原因是,如果你一直在調試你的代碼,並且在某個點有錯誤並停止執行,公共變量將不再被設置。你只需要重新運行Workbook_Open
子(你可以在IDE中運行它,使用F5
)
注意,你應該採取勸你們最後的問題,並使用Set ws1 = Thisworkbook.Sheets("abc")
。如果你不運行ws1
將被設置爲abc
在另一個工作簿中的風險,因爲它被寫爲它相當於Set ws1 = ActiveWorkbook.Sheets("abc")
感謝,現在的工作。變量流被中斷。 – Alegro
如果第三個模塊中的代碼由於發生某些事件而未被調用 Workbook_Open後,這兩個變量仍未初始化。
那麼私人會員和財產呢?
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
確保在第三工作簿中的代碼Workbook_Open後運行...那什麼事都沒有重置它:)之間 –