更新日:、 作成日:

VBA エラー 定数、固定長文字列、配列、ユーザー定義型および Declare ステートメントは、オブジェクト モジュールのパブリック メンバーとしては使用できません。

はじめに

Excel VBA マクロのエラー「定数、固定長文字列、配列、ユーザー定義型および Declare ステートメントは、オブジェクト モジュールのパブリック メンバーとしては使用できません。」の対処法を紹介します。

標準モジュール以外に Public で定数や固定長文字列や配列を宣言したときに発生します。

エラーの基本的な対処法は、エラー箇所の特定とその原因となったコードをデバッグします。

デバッグについては「デバッグの仕方」をご覧ください。
エラー処理については「エラー処理をする」をご覧ください。

解決する

Public で定数や固定長文字列や配列や Declare ステートメントを宣言するには、標準モジュールに入力する必要があります。Sheet1 やクラスなどに宣言すると発生します。

' Sheet1 のコード
Public Const 定数 As Integer = 1 ' エラー

Public 固定長 As String * 3      ' エラー

Public 配列() As String          ' エラー

Public Declare Function Tips Lib "found" () As Long ' エラー
' 標準モジュールのコード
Public Const 定数 As Integer = 1 ' OK

Public 固定長 As String * 3      ' OK

Public 配列() As String          ' OK

Public Declare Function Tips Lib "found" () As Long ' OK

Private やローカルに宣言するなら、標準モジュール以外にも宣言できます。

スコープについて詳しくは「スコープ」をご覧ください。

Public で宣言する必要があるのか確認し、あるのなら標準モジュールに宣言しているか確認すると原因がわかります。

同様に構造体を標準モジュール以外に Public で宣言すると「エラー オブジェクト モジュール内では、パブリック ユーザー定義型は定義できません。」が発生します。