教えて!ExcelVBA!

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

ExcelVBAでプロシージャ(Sub・Function)の使い方

構文

構文は以下の通りです。

Subプロシージャの構文
Sub プロシージャ名()
    ' 処理
End Sub

解説

Subプロシージャは、何らかの処理を実行するプロシージャです。値を返すことができないため、主にExcelのセルに値を設定したり、取得したりするために使用されます。

Functionプロシージャの構文
Function プロシージャ名() As データ型
    ' 処理
    プロシージャ名 = 値
End Function

解説

Functionプロシージャは、何らかの処理を実行して、値を返すプロシージャです。Excelのセルに関する処理以外にも、例えば計算結果を返す場合に使用されます。

プログラミング例

具体的なプログラミング例を紹介します。

(例1)Subプロシージャ

Sub セルに挨拶を書く()
    Range("A1").Value = "こんにちは"
End Sub

上記プログラムは、セルA1に「こんにちは」と書き込む内容となります。

(例2)Functionプロシージャ

Function 足し算(数1 As Integer, 数2 As Integer) As Integer
    足し算 = 数1 + 数2
End Function

上記プログラムは、2つの数を足して、その結果を返す内容となります。

サンプルプログラム

SubプロシージャとFunctionプロシージャを組み合わせたプログラムを示します。

Sub 実行例()
    ' セルに挨拶を書くSubプロシージャを実行
    Call セルに挨拶を書く
    ' Functionプロシージャを使って2つの数を足し算
    Dim 結果 As Integer
    結果 = 足し算(5, 10)
    ' 結果をセルA2に書き込む
    Range("A2").Value = 結果
End Sub

Sub セルに挨拶を書く()
    Range("A1").Value = "こんにちは"
End Sub

Function 足し算(数1 As Integer, 数2 As Integer) As Integer
    足し算 = 数1 + 数2
End Function

まとめ

Subプロシージャは値を返さずに処理を実行し、Functionプロシージャは処理を実行して値を返します。簡単なプログラム例を通じて、実際にExcelでどのように使うかも理解してください。