サイトについて      連絡先   検索

VBA 関数

はじめに

Excel VBA の関数の作成・呼び出しの方法を紹介します。

作成した関数はマクロの実行から実行できます。

関数を作成すると同じ処理を何度も使いまわせます。コードの可読性にもつながります。

関数の作成

VBE のプロジェクト ウィンドウから関数を作成したいシートまたは標準モジュールをダブルクリックします。

1

関数には戻り値を返さないものと、返すものの二種類があります。

Sub 関数:戻り値を返さない

Sub 関数名()
    ' ここに処理を記載
End Sub

Function 関数:戻り値を返す

Function 関数名() As String
    ' ここに処理を記載
    関数名 = "これが戻り値"
End Function

マクロの実行で実行できる関数は Public Sub 関数のみです。

Public を省略した Sub 関数は Public と同じ扱いなので実行できます。

' 実行できる
Sub 関数名()
    
End Sub

' 実行できる
Public Sub 関数名()
    
End Sub

' 実行できない
Private Sub 関数名()
    
End Sub

関数の呼び出し

Sub 関数を呼び出すには関数名を書くか、関数名の前に Call を付けます。

' 関数を作成します。
Sub サブ()
    Debug.Print ("サブ関数を呼び出しました")
End Sub

Sub Tips()
    ' Sub 関数を呼び出します。
    サブ
    Call サブ
End Sub

Function 関数を呼び出すには、変数に値を代入するのと同じです。

' この関数を呼び出します。
Function ファンクション() As String
    ファンクション = "戻り値"
End Function

Sub Tips()
    ' Function 関数を呼び出します。
    Dim ret As String
    ret = ファンクション ' ret に "戻り値" が設定されます。
End Sub

他のシートの関数を呼び出すときは、関数の前にシート名を記載する必要があります。

' これは Sheet1 のコード
Sub サブ()
    Debug.Print ("Sheet1 のサブ関数を呼び出しました")
End Sub
' これは 標準モジュール のコード
Sub Tips()
    ' Sheet1 の Sub 関数を呼び出します。
    Sheet1.サブ
End Sub

他の標準モジュールの関数を呼び出すときは、直接関数名を記載して呼び出せます。

標準モジュールとシートの違い

標準モジュールとシートのどちらに関数を作成したらいいのか迷ったら次の方法で分けられます。

関連ページ