• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA イベントプロシージャに引数を渡せま)

エクセルVBAでイベントプロシージャに引数を渡す方法

このQ&Aのポイント
  • この質問は、エクセルVBAでイベントプロシージャに引数を渡す方法についてです。
  • エクセルのVBAを使用している場合、イベントプロシージャに引数を渡すことはできません。
  • しかしながら、代替の方法として、グローバル変数を使用して値を保持し、他のプロシージャでそれを使用することができます。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

とりあえずアナタがやってみたかったことは、だいたいこんなカンジで。 ’ThisWorkbook: Public mysheetname As String Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)    mysheetname = ActiveSheet.Name  UserForm1.Show  cancel = true End Sub ’UserForm1: Private sub UserForm_Initialize()  me.commandbutton1.caption = thisworkbook.mysheetname end sub private sub CommandButton1_Click()  msgbox thisworkbook.mysheetname end sub #参考 >Private Sub UserForm_Initialize(ByVal mysheetname As String ) >Private Sub CommandButton1_Click(ByVal mysheetname As String ) いずれも勿論デタラメですね。 イベントプロシジャは、引数の有無等も含め定められた文法でしか使用する事はできません。 引数を持っているイベントプロシジャは、その文法に定められた引数をイベント発生に合わせて自動でセットされます。 引数を持っていないイベントに勝手にそれっぽいモノを書き足しても、当然文法間違いで動かないだけです。

ken123
質問者

お礼

keithinさま、いつもありがとうございます^^ 文法間違いの件は理解しました。 アドバイスいただいたコードで、 変数の値が、イベントプロシージャに引き継がれていくことが確認できました。 自分が作った処理のコードでは、 変数のシート名のところで、 インデックスが有効範囲にありません とエラー表示されたので、 変数の値を引き継げないものと思っておりました。 再度、見直します。 ありがとうございました(^^♪