#479 | 文字列化されたプロシージャ名を実行させるには? | VBA | |
ある条件によって呼び出すプロシージャを切り分けたい場合、通常は次のようなスタイルでコードを記述すると思います。 Public Sub SampleExe(num As Integer) Select Case num Case 1 Sample_A Case 2 Sample_B Case 3 Sample_C End Select End Sub Private Sub Sample_A() Debug.Print "A" End Sub Private Sub Sample_B() Debug.Print "B" End Sub Private Sub Sample_C() Debug.Print "C" End Sub 上記のプログラムでは、SampleExeプロシージャの引数に与える”数値”によって呼び出すプロシージャを切り替えています。たとえば引数が「1」なら「Sample_A」といった具合です。 一方、このようなケースで「Eval関数」を使うと、”プロシージャ名という文字列”を引数として、そのプロシージャを呼び出すことができます。 そのサンプルが次のコードです。「SampleExeStr」というプロシージャに、そこから実行させたいプロシージャ名を引数strProcNameとして与えます。たとえば「SampleExeStr "Sample_A()"」のように呼び出します。 Public Sub SampleExeStr(strProcName As String) Eval strProcName End Sub Public Function Sample_A() Debug.Print "A" End Function Public Function Sample_B() Debug.Print "B" End Function Public Function Sample_C() Debug.Print "C" End Function ここでは、次のような点に注意します。
実行例: |
|||
|
Copyright © T'sWare All rights reserved |