構文
構文は以下の通りです。
Subプロシージャの構文
Sub プロシージャ名()
' 処理
End Sub
' 処理
End Sub
解説
Subプロシージャは、何らかの処理を実行するプロシージャです。値を返すことができないため、主にExcelのセルに値を設定したり、取得したりするために使用されます。
Functionプロシージャの構文
Function プロシージャ名() As データ型
' 処理
プロシージャ名 = 値
End Function
' 処理
プロシージャ名 = 値
End Function
解説
Functionプロシージャは、何らかの処理を実行して、値を返すプロシージャです。Excelのセルに関する処理以外にも、例えば計算結果を返す場合に使用されます。
プログラミング例
具体的なプログラミング例を紹介します。
(例1)Subプロシージャ
Sub セルに挨拶を書く()
Range("A1").Value = "こんにちは"
End Sub
Range("A1").Value = "こんにちは"
End Sub
上記プログラムは、セルA1に「こんにちは」と書き込む内容となります。
(例2)Functionプロシージャ
Function 足し算(数1 As Integer, 数2 As Integer) As Integer
足し算 = 数1 + 数2
End Function
足し算 = 数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プロシージャを実行
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でどのように使うかも理解してください。