このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】ユーザー定義型は定義されていません。(コンパイルエラー)の原因

今回はこの画像のエラーの原因と解決方法を紹介します。

「ユーザー定義型は定義されていません。」が発生するのは、タイプミスが原因のことが大半です。

エラーの理由と確認すべきポイントをお見せするので、1つずつ確認してみてください。

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

エラーの解消方法

Sub Sample1()
 
     Dim i As Integar 'Integerをタイプミスしている
End Sub

例えば、このようなコードを実行(もしくはコンパイル)するとエラーが発生します。

エラーが発生している原因は変数の型をタイプミスしているためです。

詳細は後述しますが、このエラーは存在しない型で変数宣言したときに発生します。

エラーの原因は大きく次の2つのため、エラーが発生している行(おそらく変数宣言している行のはず)を調べましょう。

エラーの原因①: タイプミス

先ほどのサンプルコードのように変数の型をタイプミスしていないか確認してみましょう。おそらく、タイプミス

していることがほとんどだと思います。

エラーの原因②: ライブラリの参照設定を忘れている

Sub Sample2()
    
    Dim dic As Scripting.Dictionary 'Microsoft Scripting Runtimeの参照設定がないとエラー
End Sub

もう1つの原因はライブラリの参照設定を忘れていることです。

特にネット上からコピーしたコードを使ったときは、参照設定が漏れているかもしれません。

参照設定していない型の変数宣言をしたときにもこのエラーが発生します。

ライブラリの参照設定を追加すればエラーが解消します。

参照設定の追加方法は下記記事をご覧ください。

ユーザー定義型は定義されていません。の理由(意味)

最後にこのエラーメッセージの意味を説明します。

タイプミスなのに、どうしてユーザー定義型と言ってくるのか疑問に思う人もいるかと思います。

そもそも「ユーザー定義型」とは何か、といった話なのですが、VBAにおいても自作の型を定義することができます。(詳しく知りたい型はVBA クラスなどで検索してみてください)

例えばタイプミスしてIntegarと書くと、VBAはタイプミスとは考えず、Integarという名前の自作の型がないかと認識します。

そのため、「ユーザー定義型は定義されていません。」というエラーメッセージを表示する、というわけです。

変数の型を自作できる(ユーザー定義)のだなと覚えておいてください。

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

VBA

Posted by やろまい