• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プロシージャー名を変数にはできない?)

プロシージャー名を変数にはできない?

このQ&Aのポイント
  • シートにtest1, test2, test3として、Sub Sample()のコード内でプロシージャーを実行する方法について説明します。
  • シート上の文字を読み取ってプロシージャーを実行することで、シートの管理が楽になりますが、プロシージャーが存在しないためエラーが発生します。
  • プロシージャー名を変数にすることはできないので、別の方法を検討する必要があります。

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

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

こんなカンジ sub macro1()  dim i  for i = 1 To 3  application.run "TEST" & i  next i end sub sub test1() msgbox "TEST1" end sub sub test2() msgbox "TEST2" end sub sub test3() msgbox "TEST3" end sub セルに書いてあるのでもなんでも、文字列をプロシジャ名として実行します。

slgrbekqc3
質問者

お礼

application.run は簡単で分かりやすいですね。使わせていただきます。ご回答ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

標準モジュールでは使えませんが、下記の様にできます。ご参考まで。 コントロールのコマンドボタンをシートに置いて Sampleを登録して実行するものとします。 ☆対象シートのシートモジュール Sub Sample() Dim myRow As Long Dim procedureName As String With Me For myRow = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row procedureName = .Cells(myRow, 1).Value CallByName Me, procedureName, VbMethod Next myRow End With End Sub Sub test1() MsgBox "test1" End Sub Sub test2() MsgBox "test2" End Sub Sub test3() MsgBox "test3" End Sub

参考URL:
http://officetanaka.net/excel/vba/function/CallByName.htm
slgrbekqc3
質問者

お礼

CallByName はこういう時に使うのですね。 有難うございます。

すると、全ての回答が全文表示されます。

関連するQ&A