New キーワードの使い方が正しくありません
New キーワードは、作成可能のオブジェクト (クラスまたは Automation オブジェクトのインスタンス) にのみ適用できます。 このエラーの原因と解決策を次に示します。
1 つのインスタンスしか持てないものを、インスタンス化しようとしました。 たとえば、次のようなステートメントで を指定
Module1
して、モジュールの新しいインスタンスを作成しようとしました。Dim MyMod As New Module1
モジュールは 1 つのインスタンスしか持てないことにより、新しいインスタンスは作成できません。
Automation オブジェクトをインスタンス化しようとしましたが、これは作成可能のオブジェクトではありません。 たとえば、次のようなステートメントで ListBox を指定して、リスト ボックスの新しいインスタンスを作成しようとしました。
' Valid syntax to create the variable. Dim MyListBox As ListBox Dim MyFormInst As Form ' Invalid syntax to instantiate the object. Set MyFormInst = New Form Set MyListBox = New ListBox
ListBox と Form はクラス名であり、特定のオブジェクト名ではありません。 これらを使用して、上記の有効な Dim ステートメントと同様に、変数が特定のオブジェクト型への参照であることを指定します。 しかし、これらを使用して、 Set ステートメントでオブジェクト自体をインスタンス化することはできません。 Set ステートメントでは、汎用のクラス名の代わりに、特定のオブジェクトを指定する必要があります。
' Valid syntax to create new instance of a form or list box.
Set MyFormInst = New Form1
Set MyListBox = New List1
詳細については、該当する項目を選択し、F1 キー (Windows の場合) または HELP (Macintosh の場合) を押してください。
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。