0

すみません、また何かがおかしいです
標準モジュール:

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

助けてください。

4

3 に答える 3

3

Workbook_Openの後に発生するイベントの結果として、3番目のモジュールのコードが呼び出されていない場合、2つの変数はまだ初期化されていません。

于 2012-09-17T06:30:39.590 に答える
2

投稿たコードは機能します。

エラーが発生する理由の1つは、コードをデバッグしていて、ある時点でエラーが発生して実行を停止した場合、パブリック変数が設定されなくなることです。サブを再度実行する必要がありWorkbook_Openます(IDEから、を使用して実行できますF5

最後の質問からアドバイスを受けて、を使用する必要があることに注意してくださいSet ws1 = Thisworkbook.Sheets("abc")。そうしないと、別のワークブックのws1シートに設定されるリスクがあります。これは、書かれているとおり、abcSet ws1 = ActiveWorkbook.Sheets("abc")

于 2012-09-17T06:31:45.397 に答える
1

そして、個人会員と財産はどうですか?

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
于 2012-09-17T08:19:36.517 に答える