更新日:、 作成日:
VBA エラー オブジェクト モジュール内では、パブリック ユーザー定義型は定義できません。
はじめに
Excel VBA マクロのエラー「オブジェクト モジュール内では、パブリック ユーザー定義型は定義できません。」の対処法を紹介します。
標準モジュール以外に Public で構造体 (ユーザー定義型) を宣言したときに発生します。
エラーの基本的な対処法は、エラー箇所の特定とその原因となったコードをデバッグします。
デバッグについては「デバッグの仕方」をご覧ください。
エラー処理については「エラー処理をする」をご覧ください。
解決する
Public で構造体を宣言するには、標準モジュールに入力する必要があります。Sheet1 やクラスなどに宣言すると発生します。
' Sheet1 のコード
Public Type 構造体 ' エラー
a As Integer
End Type
' 標準モジュールのコード
Public Type 構造体 ' OK
a As Integer
End Type
Private で宣言するなら、標準モジュール以外にも宣言できます。
スコープについて詳しくは「スコープ」をご覧ください。
Public で宣言する必要があるのか確認し、あるのなら標準モジュールに宣言しているか確認すると原因がわかります。
同様に定数や配列を標準モジュール以外に Public で宣言すると「エラー 定数、固定長文字列、配列、ユーザー定義型および Declare ステートメントは、オブジェクト モジュールのパブリック メンバーとしては使用できません。」が発生します。