VBAコンパイル時に、「ユーザー定義型は定義されていません。」と表示される。
原因と解決方法3つの原因と、その解決方法が考えられます。
原因1.型指定のスペルが間違っている解説変数宣言する時に、型指定のスペルが間違っているのが原因です。
Visual Basic1234567 Sub ErrSample20_01() Dim lngGoukei As lng 'long型がlngとなっている End Sub解決方法
型のスペルミスを修正します。
Visual Basic1234567 Sub ErrSample20_02() Dim lngGoukei As Long End Subこういうミスは時間の無駄なので、できるだけCtl + Spaceで入力候補一覧から選択して入力しましょう!
原因2. ライブラリの参照設定が足りていない解説
ライブラリの参照設定が足りていないのが原因です。
ライブラリには、特定の目的ごとに必要な型や定数、関数などが定義されています。よく使うライブラリとしては、
Microsoft Scripting Runtime:ファイルやフォルダ操作するMicrosoft Outlook 16.0 Object Library:Outlookを操作するなどがあります。
このライブラリを参照設定することで、ライブラリにある機能を使うことができるようになります。
ライブラリ名や、その機能はおぼえなくてOKです。必要な時にその都度しらべれば大丈夫です。
サンプルソースでは、必要なライブラリを参照設定していないとエラーとなります。
Visual Basic12345678 Sub ErrSample20_03() Dim objFSO As FileSystemObject '←変数定義でエラーとなる Set objFSO = New FileSystemObject End Sub解決方法
エラーが発生している場所を確認し、何のライブラリが必要かネットなどで調べます。その後、必要なライブラリを参照設定で追加します。
参照設定の方法1.[ツール]→[参照設定]と選択します。
2.参照設定一覧から、必要なライブラリにチェックを入れ、OKをクリックします。
今回のサンプルソースでは、型FileSystemObjectがエラーとなっています。なので、ファイルやフォルダ操作するライブラリ「Microsoft Scripting Runtime」を参照設定します。
原因3. 他のモジュールに定義がある解説
型の定義が他のモジュールにあり、Privateで宣言されているのが原因です。Privateで宣言されていると、そのモジュール内でしか使えません。
解決方法Private宣言をPublic宣言に修正します。
Public宣言にすることで、他のプログラムに影響がないかは要確認です!
関連記事 VBAエラー原因・解決方法 成果を出す5つのポイント