プロシージャ

■概要

プロシージャとは特定の機能を実現するための命令群のことです。
命令とは「MsgBox Cells(1,1).Value」のような一文を指します。
このような命令文が集まって1つの機能が実装されます。
tool_0016

プロシージャはマクロとして使用することも、この後説明する
「Sub」や「Function」から別のプロシージャを呼び出すことが可能です。
※他の言語を知っている方は「プロシージャ = 関数」と
 考えていただくと分かりやすいと思います。
tool_0017

■Sub

Subプロシージャは呼び出し側に情報を返さないプロシージャです。
このプロシージャのみで処理を完結させたい時はSubを使用します。

●書式
	・書式例
		Sub プロシージャ名(引数)
					
		End Sub

	・具体例
		Sub Test()

		End Sub

	Sub~End Subの間に必要な命令を書きます。

●呼び出し方法
	他のプロシージャから呼び出す場合、プロシージャ名のみで呼び出す方法Callステートメントを使用して呼び出す方法があります。

	・Subプロシージャ名のみ
		書式:
			引数無し:
				プロシージャ名
		
			引数有り:
				プロシージャ名(引数)

		具体例:
			Sub Test()
				Test2
				MsgBox Cells(1,1).Value
			End Sub

			Sub Test2()
				Cells(1, 1).Value = 100
			End Sub

			実行結果:
				100と書かれたメッセージボックスが表示される

	・Callステートメント
		書式:
			Call プロシージャ名

		具体例:
			Sub Test()
				Call Test2
				MsgBox Cells(1,1).Value
			End Sub

			Sub Test2()
				Cells(1, 1).Value = 100
			End Sub

			実行結果:
				100と書かれたメッセージボックスが表示される

	・Callステートメント使用理由
		プロシージャ名のみでも呼び出しが可能なのに
		Callステートメントを使用する理由は
		「コードの可読性向上」です。
		引数無しのプロシージャ呼び出しは()が必要ないので、
		変数としての見分けがつきません。
		VBAのコードに慣れている人はすぐに分かりますが、
		慣れてない人は混乱するかもしれません。
		誰でもプロシージャを呼び出していることが分かるように
		「Call プロシージャ名」を使用します。

		ステートメント:
			ステートメントとは「」や「命令文」という意味
			Callステートメントとは「Call文」ということ

■Function

FunctionプロシージャはSubプロシージャとは異なり、
呼び出し側に実行結果を返すことができます。
FunctionプロシージャはExcelから起動する際、
マクロの一覧に表示されないので注意して下さい。
※Functionプロシージャ名を指定したら起動可能です。

●書式
	・書式例
		Function プロシージャ名(引数) As 戻り値のデータ型
			プロシージャ名 = 実行結果
		End Function

	・具体例
		Function GetMyName() As String
			GetMyName = "山田太郎"
		End Sub

	・呼び出し例
		Sub Test()
			Cells(1,1).Value = GetMyName
			MsgBox Cells(1, 1).Value
		End Sub

		Function GetMyName() As String
			GetMyName = "山田太郎"
		End Function

		実行結果:
			山田太郎と書かれたメッセージボックスが表示される

	Function~End Functionの間に必要な命令を書きます。
	実行結果はプロシージャ名が結果を格納するための変数として扱われるので
	処理結果はプロシージャ名に代入します。
	※Functionの場合、Callは使用できませんので注意して下さい。