VBAのコードを実行または保存しようとしたとき、突然表示されるエラー「ユーザー定義型が定義されていません。」。初心者の方はもちろん、ある程度慣れている方でも戸惑うことがあります。この記事では、このエラーメッセージの意味と主な原因、そして具体的な対処法についてわかりやすく解説します。
目次
「ユーザー定義型が定義されていません。」とは
以下のようなエラーメッセージが表示されたことはありませんか?
これは、VBAで使用しているデータ型やオブジェクトが正しく認識されていないときに表示されるエラーです。具体的には以下の2つが主な原因になります。【VBA】3パターンの"コンパイルエラー:ユーザー定義型は定義されていません。"エラーの原因
原因①:データ型やオブジェクト名のスペルミス
まず多いのが、型のスペルミスによるものです。たとえば以下のコードを見てください。
Sub データ型ミス()
Dim K As Lomg
K = Range("B5")
Range("A1") = K
End Sub
ここで「Long」と書くべきところが「Lomg」と誤記されているため、VBAは「Lomg」という型を知らず、「ユーザー定義型が定義されていません。」と表示します。
この場合は正しいスペルに修正するだけでエラーは解消されます。
原因②:外部オブジェクト(WordやPowerPointなど)が未参照
もうひとつのよくある原因は、外部ライブラリの参照設定がされていないことです。たとえば、以下のようにWordやPowerPointのオブジェクトを使っているコードを記述している場合:
Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
これらは**「Microsoft Word XX.0 Object Library」や「Microsoft PowerPoint XX.0 Object Library」**が参照設定されていないと、「Word.Application」や「PowerPoint.Presentation」がVBAに認識されず、同じエラーが出てしまいます。
対処方法:参照設定でライブラリを有効にする
このようなエラーは「参照設定」を行うことで解消できます。
手順:
「VBE(Visual Basic Editor)」を開く(
Alt + F11
)メニューから「ツール」→「参照設定」をクリック
表示された一覧から以下のように該当ライブラリにチェックを入れる:
Microsoft Word XX.0 Object Library
Microsoft PowerPoint XX.0 Object Library など
下の画像のように設定することで、オブジェクトをVBAが認識できるようになります。
これで、先ほどのようなエラーは解消されるはずです。
まとめ
「ユーザー定義型が定義されていません。」というエラーは、スペルミスや参照設定不足が主な原因です。同じメッセージでも、エラーの背景には複数の可能性があるため、どこで問題が発生しているのかをしっかり見極めることが大切です。
特に外部アプリケーションとの連携を行う場合は、参照設定を忘れずに行いましょう。今後このエラーに出会っても、この記事を参考にすれば、冷静に対応できるはずです。