すみません、また何かがおかしいです
標準モジュール:
Public ws1 As Worksheet
Public rCopy As Range
Workbook_Open:
Set ws1 = Sheets("abc")
Set rCopy = ws1.Range("A1")
3番目のモジュール:
ws1.Select ' Error
rCopy.Select ' Error
助けてください。
Workbook_Openの後に発生するイベントの結果として、3番目のモジュールのコードが呼び出されていない場合、2つの変数はまだ初期化されていません。
投稿したコードは機能します。
エラーが発生する理由の1つは、コードをデバッグしていて、ある時点でエラーが発生して実行を停止した場合、パブリック変数が設定されなくなることです。サブを再度実行する必要がありWorkbook_Open
ます(IDEから、を使用して実行できますF5
)
最後の質問からアドバイスを受けて、を使用する必要があることに注意してくださいSet ws1 = Thisworkbook.Sheets("abc")
。そうしないと、別のワークブックのws1
シートに設定されるリスクがあります。これは、書かれているとおり、abc
Set ws1 = ActiveWorkbook.Sheets("abc")
そして、個人会員と財産はどうですか?
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