プロが教える店舗&オフィスのセキュリティ対策術

エクセル2003VBAで、スプレッドシートのシート名「Sheet1」のところをマウスで「Sheet2」「Sheet3」と変更したときに、セルA1の値を取得するイベントを発生させたいのですが、
Private Sub Spreadsheet2_sheetchange()
の()の中身をどう書いたらよろしいでしょうか?
ご存知の方、教えてください。
よろしくおねがいします!

A 回答 (2件)

OWC11.Spreadsheetコントロールの事ですね。


()の中身...というのはイベントプロシージャの引数の事?
書く、というより自動記述してくれます。
UserForm上であれ、Sheet上であれ、そのオブジェクトモジュールを開いて
上部左のドロップダウン(General)▼パートで
Spreadsheet2
を選択すると、右の(Declarations)▼パートに選択できるイベント一覧が出ます。
>スプレッドシートのシート名「Sheet1」のところをマウスで「Sheet2」「Sheet3」と変更したときに、セルA1の値を取得するイベント
は _sheetchange イベントではなくて _SheetActivate イベントです。
以下のコードが記述されます。

Private Sub Spreadsheet2_SheetActivate(ByVal Sh As OWC11.Worksheet)

End Sub

引数ShがアクティブになったSpreadsheetコントロールのシートですから
MsgBox Sh.Cells(1).Value
みたいに取得します。
「エクセル2003VBAで、スプレッドシー」の回答画像2
    • good
    • 0
この回答へのお礼

ばっちりいけました!
わかりやすい回答ありがとうございます。

お礼日時:2009/06/10 11:25

質問を誤解しているかもしれませんが、ワークシートをアクティブにしたとき、そのシートのA1の値を取得できればいいのでしょうか?


それなら、ThisWorkbookモジュールに

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox ActiveSheet.Range("A1").Value
End Sub

です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

お礼日時:2009/06/10 11:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!