更新日:、 作成日:
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 で宣言すると「エラー オブジェクト モジュール内では、パブリック ユーザー定義型は定義できません。」が発生します。