|    | 
     こんにちは。多摩川と申します。 
 
シートモジュールを起点に標準モジュールのプロシージャを呼び出すマクロを作成中です。 
シートには 
   B列  C列  D列 E列 
5行 hexa  実行 Yes Yes 
6行 penta 実行    Yes 
7行 tetra 実行 Yes 
: 
: 
X行 END 
 
標準モジュールには下記のようなオブジェクトがあります。 
・オブジェクト名:c_hexa 
・オブジェクト名:f_hexa 
・オブジェクト名:c_penta 
・オブジェクト名:f_penta 
・オブジェクト名:c_tetra 
・オブジェクト名:f_tetra 
 
さらに,オブジェクトには下記のようなSub プロシージャが存在します。 
・Sub hexa(a, b) 'c_hexa or f_hexa の場合 
・Sub penta(a, b) 'c_penta or f_penta の場合 
・Sub tetra(a, b) 'c_tetra or f_tetra の場合 
(プロシージャのコード内容はオブジェクトごとに異なります。) 
 
まとめると,例えば,Callステートメントの場合 
Call c_hexa.hexa(a, b) 
Call f_hexa.hexa(a, b) 
Call c_penta.penta(a, b) 
こんな感じです。 
 
'シートモジュール 
Option Explicit 
  Dim MyFName As String 
  Dim OutType As String 
  Dim IDcheck As String 
  Dim YorN As Integer 
  Dim i As Integer 
'--------------------------------------------------------- 
Sub Main() 
  i = 1 
  IDcheck = 0 
  YorN = 0 
  MyFName = .GetOpenFilename 
  If MyFName = "False" Then Exit Sub 
With ThisWorkbook.Sheets(1) 
  While .Cells(i + 4, 2) <> "END" 
    If .Cells(i + 4, 3) = "実行" Then 
      OutType = .Cells(i + 4, 2) 
      If .Cells(i + 4, 4) = "Yes" Then IDcheck = 1 
      If .Cells(i + 4, 5) = "Yes" Then YorN = 1 
      i = i + 1 
      Select Case YorN 
        Case 0 '例,c_hexa.Length(a, b) 
          '各プロシージャを呼び出す。 
        Case 1 '例,f_hexa.Length(a, b) 
          '各プロシージャを呼び出す。1. 
      End Select 
    End If 
  Wend 
End With 
End Sub 
 
i = 1 の場合,OutType = "hexa", IDcheck = 1, YorN = 1 となります。 
"hexa"というキーワードが多数あるため,変数として格納しました。 
そして,1.の所でプロシージャの呼び出しが起きるのですが, 
 
Call "f_" & OutType & "." & OutType & "(MyFName, IDcheck)" 
 
としたいのですが,これはだめなようです。では,と思い, 
 
Application.Run """f_" & OutType & "." & OutType & "(MyFName, IDcheck) """ 
 
これも,だめなようでした。 
どのようにして,呼び出しをすればよいのでしょうか? 
恐れ入りますが,どなたかご教示下さい。 
 | 
     
    
   |