• ベストアンサー

エクセル2003VBAで、スプレッドシートのシート変更イベントを教えてください。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.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 みたいに取得します。

ddtqp
質問者

お礼

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

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

質問を誤解しているかもしれませんが、ワークシートをアクティブにしたとき、そのシートのA1の値を取得できればいいのでしょうか? それなら、ThisWorkbookモジュールに Private Sub Workbook_SheetActivate(ByVal Sh As Object) MsgBox ActiveSheet.Range("A1").Value End Sub です。

ddtqp
質問者

お礼

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

関連するQ&A