#19エクセルVBA入門-プロシージャから他のプロシージャをCallで呼び出す

Excel VBA

プロシージャから他のプロシージャを呼び出すことが出来ます。

よく使うプロシージャは部品化して都度呼び出して使うということを、プログラムでは頻繁に行います。

CallTestというプロシージャからSayHiというプロシージャを呼び出してみましょう。

Sub CallTest()
    Dim names As Variant
    names = Array("西郷", "勝", "一橋")
    Dim name As Variant

   For Each name In names

ここまでは前回と変わりませんね。

Call SayHi(name) を追加します。

SayHi subプロシージャを呼び出します。その際nameを引数として、で渡しています。

Sub CallTest()
    Dim names As Variant
    names = Array("西郷", "勝", "一橋")
    Dim name As Variant
        For Each name In names
        Call SayHi(name)

Sub CallTestの完成です。

Sub CallTest()
    Dim names As Variant
    names = Array("西郷", "勝", "一橋")
    Dim name As Variant
    For Each name In names
        Call SayHi(name)
    Next name
End Sub

 

次に呼び出される Sub SayHiプロシージャを書いていきます。

Sub SayHi(ByVal name As Variant)

 

ByVal は「値渡し」を意味します。他に「参照渡し」がありますが、今回は言及しません。

Variant型の変数name値渡し引数として受け取ると意味になります。

Sub SayHi(ByVal name As Variant)
    Debug.Print "ご無沙汰です、 " & name    
End Sub

 

渡ってきた引数nameをDebug.Printでイミディエイトウィンドウに表示します。

その際、& 演算子で「ご無沙汰です、 西郷」と表示されるようにします。

Option Explicit

Sub CallTest()
 Dim names As Variant
 names = Array(“西郷”, “勝”, “一橋”)
 Dim name As Variant

 For Each name In names
  Call SayHi(name)
 Next name
End Sub

Sub SayHi(ByVal name As Variant)
 Debug.Print “ご無沙汰です、 ” & name
End Sub

コメント