まさ工房

ExcelVBAとAcessDBを利用した業務支援ツールを作成する工房です

【Excelマクロ・VBA】プロジージャ(Sub・Function)の使い方を教えて!

       f:id:m_kbou:20190603072216p:plain

プロシージャとは、記述したプログラムを呼び出し、実行するための最小単位となります。プロシージャには、SubプロシージャとFunctionプロシージャの2つの種類があります。使い方について具体的に説明します。

 

【目次】

 

構文

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

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

=======================================================================

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

=======================================================================

[説明]:

記述方法は、「Sub()」で始まり「End Sub」で終わる様に記述します。[プロシージャ名]には、プロシージャの名前を記述します。名前はローマ字以外にも漢字や数字、記号等を使用する事ができます。また、[処理内容]には、実際に実行するプログラム内容を記述します。

[記述例]:

----------------------------------------------------

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

----------------------------------------------------

 

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

=======================================================================

Function [プロシージャ名][引数]
        [処理内容]
End Function

=======================================================================

[説明]:

記述方法は、「Function()」で始まり「End Function」で終わる様に記述します。[プロシージャ名]には、プロシージャの名前を記述します。名前はローマ字以外にも漢字や数字、記号等を使用する事ができます。[処理内容]には、実際に実行するプログラム内容を記述します。また、[引数]には変数を指定し、この変数値を使用して[処理内容]で処理を実行します。[引数]は複数指定する事ができ、複数指定する場合は、引数と引数の間を「,」(カンマ)で区切ります。Subプロシージャとの大きな違いは、Functionプロシージャは、自分で作成した関数と理解して下さい。具体的な使い方は以下で説明しますが、Subプロシージャから呼び出して使用する関数との理解で十分です。

[記述例]:

----------------------------------------------------

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

----------------------------------------------------

 

使い方

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

Subプロシージャの使い方

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

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub サンプル()
    MsgBox "おはようございます。",64,"メッセージ"
End Sub

-------------------------------------------------

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

[実行例]:

f:id:m_kbou:20190531081601p:plain

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

 

Functionプロシージャの使い方

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

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

'*-----------------------------*
'* Subプロシージャ
'*-----------------------------*
Sub サンプル()
    MsgBox 計算結果(1, 2)
End Sub

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

-------------------------------------------------

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

[実行例]:

f:id:m_kbou:20190531081614p:plain

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

 

おわりに

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