0
Public sp As Worksheet  //  on top of ThisWorkbook module
...
Sub one()
Set sp = Sheets("blueSky")  // marked
MsgBox sp.Name
...
Sub two()
Set sp = Sheets("blueSky")  //  marked
MsgBox sp.Range("A1").Value

マークされたラインは常に同じです。
それで、マークされた行を一度だけ書くことは可能ですか?そしてどこに?
私は Workbook.Open イベントを試しました - 結果がなければ
、各 Sub に 3 行目だけを書き込みたいのですが、これは常に異なります。

4

1 に答える 1

4

以下をモジュール ( ではなくThisWorkbook) に入れると、グローバルWorksheet変数が得られます。

Option Explicit

Global sp As Worksheet

次に、次のいずれかの方法でアドレス指定できますThisWorkbook(サブルーチンone()two()、モジュールでも機能します)。

Option Explicit

Public Sub one()
    Set sp = Sheets("Sheet1")  '// marked
    MsgBox sp.Name
End Sub

Sub two()
    Set sp = Sheets("Sheet2") ' //  marked
    MsgBox sp.Range("A1").Value
End Sub

Private Sub Workbook_Open()
    Set sp = Sheets("Sheet3")
End Sub
于 2012-09-08T07:26:43.117 に答える