-
∨目次
- 標準モジュールとは
- 標準モジュールを追加する
- コードを作成する
- 標準モジュールのスコープ
- セルを操作する
VBA 標準モジュール
はじめに
Excel VBA マクロの標準モジュールを作成する方法を紹介します。
標準モジュールには変数や関数などすべてのコードを書けます。
Public で宣言すると、他のワークシートなどから呼び出せるのでコードを再利用できます。
-
目次
- 標準モジュールとは
- 標準モジュールを追加する
- コードを作成する
- 標準モジュールのスコープ
- セルを操作する
標準モジュールとは
VBA マクロのコードを書くためのファイルです。
関数や変数などすべてのコードを書けます。Public な定数や配列や構造体などは、標準モジュールにのみ宣言できます。
マクロとして実行できるのは、標準モジュールに宣言された Public な Sub 関数です。Public な Function 関数は、エクセルの数式から使用できます。
同じように VBA のコードを書くファイルにクラスがあります。
- 詳しくは「クラス」をご覧ください。
使う理由
Sheet1 などのワークシートだけにコードを書いても問題ありません。標準モジュールに Public な関数を作成すると、他のシートや標準モジュールから呼び出せるようになります。同じコードを何度も書く必要がなくなります。
標準モジュールを追加する
VBE の [挿入] から [標準モジュール] をクリックします。

標準モジュールが追加されます。

名前を変更するには、その [標準モジュール] を選択した状態で [オブジェクト名] を変更します。

スポンサーリンク
コードを作成する
Sheet1 などのワークシートに変数や関数を作成したときと同じように、標準モジュールにも作成できます。コードの書き方に違いはありません。
マクロ関数
Public で引数のない Sub 関数はマクロとして実行できます。
Public Sub マクロ1()
End Sub

マクロの記録機能を使うと自動でこのような関数が作成されます。
エクセルから呼び出す
Public な Function 関数は、エクセルの数式から呼び出せます。関数の戻り値が結果になります。
Public Function 関数() As String
関数 = "かんすう"
End Function
Public Function 引数あり(i As Integer) As String
引数あり = i * 10
End Function

標準モジュールのスコープ
Public で宣言された変数を参照するにはファイル名.変数名または変数名のように入力します。関数など、他のものについても同様です。
ただし別の標準モジュールに同じ名前の変数や関数などを宣言できるため、ファイル名.変数名形式で区別できるようにするのをオススメします。
標準モジュール1 のコード
Public 変数 As Integer
Sub 関数() ' 省略すると Public になる
End Sub
Sheet1 のコード
Sub 実行()
Module1.変数 = 1 ' ファイル名.変数名で参照する
変数 = 2 ' 変数名だけでも参照できる
Call Module1.関数 ' ファイル名.関数名で参照する
Call 関数 ' 関数名だけでも参照できる
End Sub
定数と固定長文字列と配列と構造体を Public で宣言するには、標準モジュールにする必要があります。
- スコープについて詳しくは「スコープ」をご覧ください。
セルを操作する
Sheet1 で次のコードを実行すると、必ず Sheet1 の A1 のセルに入力されます。これは自身のシートに対して操作しているためです。
Range("A1").Value = "Tipsfound"
' Me.Range("A1").Value = "Tipsfound" と同じコード
標準モジュールで実行すると、選択中のワークシートの A1 のセルに対して入力されます。

これは ActiveSheet.Range.Value の ActiveSheet が省略されているためです。
Range("A1").Value = "Tipsfound"
' ActiveSheet.Range("A1").Value = "Tipsfound" と同じコード
特定のシートに対して操作したいときは、そのワークシートを指定します。
Sub 実行()
Sheets(1).Range("A1").Value = "Tipsfound" ' 左から 1 番目のワークシート
Sheets("Sheet1").Range("A1").Value = "Tipsfound" ' Sheet1 という名前のワークシート
End Sub
スポンサーリンク