シートに
test1
test2
test3
として、
--------------------------------
Sub Sample()
Dim myRow As Long
Dim procedure As String
For myRow = 1 To Cells(Rows.Count, "A").End(xlUp).Row
procedure = Cells(myRow, 1)
Call procedure
Next myRow
End Sub
Sub test1()
End Sub
Sub test2()
End Sub
Sub test3()
End Sub
--------------------------------
こういう事ってできないのでしょうか?
シートの文字を読み取ってプロシージャーを実行できれば、順番変えたり、要らないプロシージャーを消したりを、シート上で管理できるから楽なのになと思ったのですが。
これをやろうとすると、procedureというプロシージャーがないから
Sub、Function、または Property が必要です。
になってしまいます。
こんなカンジ
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
セルに書いてあるのでもなんでも、文字列をプロシジャ名として実行します。
標準モジュールでは使えませんが、下記の様にできます。ご参考まで。
コントロールのコマンドボタンをシートに置いて 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
お礼
application.run は簡単で分かりやすいですね。使わせていただきます。ご回答ありがとうございました。