プチIT化 PR

【VBA】「ユーザ定義型は定義されていません。」が出た時どうすれば?

記事内に商品プロモーションを含む場合があります。
当サイトは、アフィリエイト広告を利用しています。

こんにちは!今回の記事は、Excel VBAマクロの実行時に「ユーザの定義型は定義されていません」が出た時どうしたか?という記事になります。

とある日、Excel VBAマクロを実行したところ、以下のエラーが出ました。

コンパイルエラー:ユーザ定義型は定義されていません。

なぜこんなエラーが出たのか、どうしたのかをまとめていきたいと思います。それでは、いってみましょう!

原因:動かすための設定ができていなかった

今回、エラーメッセージがでてしまったのは、Excelマクロの”参照設定”という設定が足りていなかったからでした。

参照設定とは?

参照設定とは、VBAから参照するライブラリを設定することです。参照するライブラリを設定すると、標準的な機能に加えて指定したライブラリの機能を使えるようになります。

何も設定しないと標準的な処理しかできないですが、追加で「この処理使いたい!」という時に、マクロで参照しますと設定することで、利用できる処理が増える(拡張する)設定を行うようなイメージです。

例えば…

前述した説明が分かりにくかったかもしれませんので例を。例えば参照設定を行わずに以下のVBAを実行した場合、エラーが出ます。

Sub test()

  Dim objFSO As FileSystemObject
  Set objFSO = New FileSystemObject

End Sub

このFileSystemObjectはファイルやフォルダなどを操作するためのものですが、標準の設定のままでは動きません。動かすために「Microsoft Scripting Runtime」というライブラリを読み込む必要があります。

参照設定で「Microsoft Scripting Runtime」を読み込むという設定を行えば、FileSystemObjectを扱えるようになります。

対処:参照設定を行う

以下の手順で参照設定を行いました。

  1. [開発]タブ > Visual Basic(Microsoft Visual Basic for Applications)をクリックで起動
  2. [ツール] > [参照設定]をクリック
  3. 必要なライブラリのチェックを入れる(※ここでは、Microsoft Scripting Runtimeというライブラリにチェックを入れています。)
  4. [OK]ボタンをクリック

必要なライブラリを参照する設定を追肥えたことで、再度実行するとエラーが出なくなりました。

参照設定は設定したブックのみ有効

参照設定を行うとそのファイルに設定が残ります。次開いたときにも参照設定は残ります。ですが、新規にファイルを作成した場合、参照設定は引き継がれないので、もう一度参照設定を行う必要があります。

マクロだけコピーして新しいファイルに移すという時などはもう一度参照設定が必要になります。

さいごに

いかがだったでしょうか。同じような疑問を持たれた方の参考になれば幸いです。ちなみに、今回自分のエラー原因は述べた通りですが、同じエラーでも原因は異なることはありますので、ご了承ください。設定は自己責任でお願いします。それでは、また!