3年落ちのPCでまだまだがんばる日記

購入して3年後のパソコンはまだまだ使えます。PCよろず。

古いExcelのVBAにおけるユーザー定義型のエラー

Excel 2010などの古いもので VBA(Visual Basic for Applications=通称マクロ)にてMSComctlLib を使った変数定義で突然「ユーザー定義型は定義されていません。」というエラーが出るとき。ありますよね?

例えば Dim hoge as MSComctlib.node とか ...as MSComctlib.Treeview とかしたときです。またこれが発生するシチュエーション的には、今まで古いExcel使っていて、新しいExcelをインストールした後。自作のVBAマクロを別のパソコンで動かしてみたりしたときなど。

原因 Windows Commom Controls ライブラリが読み込まれていない。

解決方法 該当するライブラリを読み込む。


VB Editerの ツール-参照設定
Windows Commom Controls 6.0 → 実体は system32¥MSCOMCTL.OCX

これにチェックする。上のほうにありました。
きちんと読まれれば、 Mscomctlib と入力して F2を押すとクラス、メソッド一覧が確認できます。