自分用の覚書。Application.Run(マクロ名〔,引数1〔,引数2〔,...〕〕〕) を使うと、呼び出すマクロ名を文字列で扱うことができ、呼び出すマクロの切り替えを呼出側で変数の値として切り替えできる。fortran や C より簡単(fortran でサブルーチンの引数にサブルーチンを渡す - あらきけいすけの雑記帳)
Option Explicit Sub test000() Dim s As String, v As Variant, v0 As Variant s = "マクロ1" ' 呼び出すマクロの名前 v = 10 v0 = Application.Run(s, v) MsgBox "test000 calls " & s & "(" & v & ")->" & v0 End Sub Function マクロ0(v As Variant) As Variant MsgBox "マクロ0(" & v & ")" マクロ0 = v If IsNumeric(v) Then: マクロ0 = v + 1 End Function Function マクロ1(v As Variant) As Variant MsgBox "マクロ1(" & v & ")" マクロ1 = v If IsNumeric(v) Then: マクロ1 = v - 1 End Function