教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 構文】Call文(他のプロシージャ呼び出し)の使い方を知りたいです。教えて!

f:id:m_kbou:20201126153231p:plain

プロシージャの中で他のプロシージャを呼び出したい時にはCall文を使います。Call文は、Call先のSubやFunctionプロシージャに制御を渡し、プロシージャでの処理が終了すると、Call文の次の処理に制御が移ります。このCall文の使い方について紹介します。

 

 

構文

記述方法は以下の通りとなります。

Call文の記述方法

Call [他のプロシージャ名]([引数])

[説明]:

プロシージャの中で他のプロシージャを呼び出します。

[他のプロシージャ名] 呼び出すプロシージャ名を記述します。
[引数] 呼び出すプロシージャに渡す値を記述します。
※省略する事も可能です。

[記述例]:

Call 点数判定
Call 点数判定(点数)

 

使い方

使い方について具体的に説明します。

基本的な使い方

基本的な使い方について説明します。

[画面]:

f:id:m_kbou:20201126153250p:plain

※<実行>ボタンには、以下のプログラミング例が登録されています。

[プログラミング例]:

'↓処理①
Sub サンプル()

  Call 点数判定
  Call メッセージ

End Sub

'↓処理②
Sub 点数判定()

  If (Range("A2") >= 80) Then
    Range("B2") = "合格"
  Else
    Range("B2") = "不合格"
  End If

End Sub

'↓処理③
Sub メッセージ()

  MsgBox "合否判定が終了しました。"

End Sub

処理①:他のプロシージャ呼び出しによる処理
以下の順番で処理が実行されます。
・最初に処理②:点数判定プロシージャを呼び出して処理を実行します。
  ↓
・処理が終了すると処理①:サンプルプロシージャに処理が戻ります。
  ↓
・次に処理③:メッセージプロシージャを呼び出して処理を実行します。
  ↓
・処理が終了すると処理①:サンプルプロシージャに処理が戻ります。

処理②:点数判定処理
A2セルに入力されている点数が80以上であれば「合格」を、80未満であれば「不合格」をB2セルにセットします。

処理③:メッセージ処理
「合否判定が終了しました。」をMsgBoxで表示します。

f:id:m_kbou:20210205165308p:plain

※上記ののプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

A2セルに65を入力して<実行>ボタンをクリックします。プログラム条件である80未満に一致する事から、B2セルに”不合格”が表示されます。また、”合否判定が終了しました。”のメッセージが表示されました。

f:id:m_kbou:20201126153304p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

基本的な使い方についての説明は以上です。

 

引数を指定した使い方 

引数を指定した使い方について説明します。

[画面]:

f:id:m_kbou:20201126153346p:plain

※<実行>ボタンには、以下のプログラミング例が登録されています。

[プログラミング例]:

'↓処理①
Sub サンプル()

  Dim 点数 As Double
  点数 = Range("A2")
  Call 点数判定(点数)

End Sub

'↓処理②
Sub 点数判定(点)

  If (点 >= 80) Then
    Range("B2") = "合格"
  Else
    Range("B2") = "不合格"
  End If
  MsgBox "合否判定が終了しました。"

End Sub 

処理①:他のプロシージャ呼び出しによる処理
以下の順番で処理が実行されます。
・変数:点数を定義します。
  ↓
・上記で定義した変数:点数にA2セルの値をセットします。
  ↓
・処理②:点数判定プロシージャを呼び出して処理を実行します。
 この際、変数:点数も引数として渡します。
  ↓
・処理が終了すると処理①:サンプルプロシージャに処理が戻ります。

処理②:点数判定処理
処理①から引数として渡された変数:点数を使用して判定処理を実施します。変数:点数の値が80以上であれば「合格」を、80未満であれば「不合格」をB2セルにセットして「合否判定が終了しました。」をMsgBoxで表示します。

f:id:m_kbou:20210205165420p:plain

※上記ののプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

A2セルに85を入力して<実行>ボタンをクリックします。プログラム条件である80以上に一致する事から、B2セルに”合格”が表示されます。また、”合否判定が終了しました。”のメッセージが表示されました。

f:id:m_kbou:20201126153402p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

引数を指定した使い方についての説明は以上です。

 

おわりに

Call文の使い方について説明しました。毎回使用するプロシージャについては、部品化してCall文で呼び出す様なプログラミングをする事でシンプルで見易いコーディングが記述できます。是非有効に活用して下さい。