教えて!ExcelVBA!

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

【ExcelVBA 基本操作】プロシージャ(Sub・Function)の使い方を教えて!

f:id:m_kbou:20200418101528p:plain

プロシージャとはVBAの命令文を1つにまとめたものです。VBAコードは1行ごとに命令文を記述して実行しますが、通常のマクロでは複数の命令文を記述して纒めて実行します。その様に纏められた命令文がプロシージャとなります。プロシージャには、SubプロシージャとFunctionプロシージャの2種類があります。それらのプロシージャの使い方について紹介します。

 

 

構文

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

(1)Subプロシージャの記述方法

Sub [プロシージャ名]()
  [処理内容]
End Sub

[説明]:

記述方法は「Sub()」で始まり「End Sub」で終わる様に記述します。

[プロシージャ名] プロシージャの名前を記述します。
※英字・漢字・数字・記号等を使用する事ができます。
[処理内容] 実行する処理内容を記述します。

[記述例]:

Sub サンプル()
  MsgBox "はじめまして。", 64, "メッセージ"
End Sub

(2)Functionプロシージャの記述方法

Function [プロシージャ名]([引数1],[引数2],・・・)
  [処理内容]
End Function

[説明]:

記述方法は「Function()」で始まり「End Function」で終わる様に記述します。

[プロシージャ名] プロシージャの名前を記述します。
※英字・漢字・数字・記号等を使用する事ができます。
[引数1]
[引数2]
 ・
 ・
任意の変数を記述します。
引数は複数指定する事ができます。
複数指定する場合は「,」(カンマ)で区切ります。
[処理内容] 実行する処理内容を記述します。

※このプロシージャは、Subプロシージャの中で使用する関数と理解して下さい。

[記述例]:

Function 計算結果(数値1, 数値2)
  計算結果 = 数値1 * 数値2
End Function

 

使い方

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

Subプロシージャの使い方

Subプロシージャの使い方について説明します。

[プログラミング例]:

Sub サンプル()

  MsgBox "おはようございます。",64,"メッセージ"

End Sub

内容は、サンプルと言う名前のSubプロシージャで、「”おはようございます。”をMsgBoxで表示して下さい。」との内容になります。

f:id:m_kbou:20210208083715p:plain

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

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210224160059p:plain

②結果は以下の様に表示されます。MsgBoxで「おはようございます。」が表示されます。

f:id:m_kbou:20190531081601p:plain

[サンプル]:

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

drive.google.com

Subプロシージャの使い方についての説明は以上です。

 

Functionプロシージャの使い方

Functionプロシージャの使い方について説明します。

[プログラミング例]:

'*------------------------*
'* Subプロシージャ
'*------------------------*
Sub サンプル()

  MsgBox 計算結果(1, 2)

End Sub

'*------------------------*
'* Functionプロシージャ
'*------------------------*
Function 計算結果(数値1, 数値2)

  計算結果 = 数値1 * 数値2

End Function

サンプルプロシージャを実行すると、計算結果と言う名前のFunctionプロシージャを呼び出します。その際、「1」と「2」の2つの値を渡します。呼び出された計算結果プロシージャでは、それぞれの値を「数値1」及び「数値2」の引数として受け取り、処理を実行します。実行される処理は「計算結果 = 数値1 * 数値2」となるため、計算は「1 * 2 = 2」となり、「2」が「計算結果」に返されるます。結果、サンプルプロシージャのMsgBoxでは「2」が表示されます。

f:id:m_kbou:20210208083903p:plain

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

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210224160548p:plain

②結果は以下の様に表示されます。MsgBoxで「2」が表示されます。

f:id:m_kbou:20190531081614p:plain

[サンプル]:

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

drive.google.com

Functionプロシージャの使い方についての説明は以上です。

 

おわりに

VBAのプログラミングでは、プロシージャ内にプログラム記述をするため、2つのプロシージャの使い分けを理解する事が必須となります。また、プロシージャが無いと記述したプログラムも実行する事ができません。まずは、SubプロシージャとFunctionプロシージャの違いを十分に理解し、適切な使い方ができる様にして下さい。