3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VBAのエラー・メッセージが意味不明で困ったときはOfficeの言語設定を日本語から英語に切り替えよう

Last updated at Posted at 2022-06-27

VBAのエラー・メッセージに困った話

わたしはつい最近仕事のため、ExcelとWordを動かすVisual Basic for Applicationプログラミングを習いはじめました。Javaプログラミングの経験はウン十年、素人ではないつもり。しかしVBAには初心者なのでけっこうまごついています。とくにVBAが表示するエラー・メッセージが理解できなくて困っています。

ある時、こんなエラーダイアログに遭遇しました。

コンパイルエラー.png

どんなVBAコードがこのエラーを発生させてたかというと、下記のようなクラスモジュールでした。いわゆる「インターフェイス」というやつです。

IDocTransformer.png

まる一日頭を掻きむしったあげくこのコードにミスがあることがわかりました。どこがどう間違っているのかはたいしたことではない、他人さまに向かって述べるほどのことではない。しかしわたしはこれだけ言いたい。VBAが出力する日本語のエラー・メッセージは意味不明すぎる、と。

誤訳だった

VBAはこう表示しました。

コンパイル エラー:
オブジェクトモジュールにはインターフェイス 'Transform' 用の 'IDocTransformer' が必要です

意味わかりますか?ABCでなく漢字かな文字だから一見日本語のようにみえるが、まったく意味不明です。

このメッセージを見てわたしは「IDocTransformer というモジュールが見つからないよ」とVBAが指摘しているのかと疑った。半角アルファベットでなく全角文字をタイプしちゃったかと疑って何度も打ち直したがそうではなかった。このメッセージを手掛かりにネットを検索した。

VBA コンパイル エラー オブジェクトモジュールには インターフェイス 用の が必要です

とキーを指定してググったが、役立つページは見当たらなかった。

ふと思い立って

VBA error object module interface

とキーを指定したら、1つだけStack OverflowのURL がヒットした。それによると同じメッセージが英語では下記のように表示されるらしい。

Compile error:
Object module needs to implement 'Transform' for interface 'IDocTransformer'

おや?これなら意味がわかる。VBAは IDocTransformer モジュールが存在していることは承知していて、そのなかに Transform メソッドの定義があるべきだと承知しているが、 Transform が見つからない、とこの英文メッセージは言っている。

だから IDocTransformer モジュールのなかの Transform メソッドの書き方が間違っているかもしれないとアタリをつけて、コードを見直したら見つけました。 IDocTransformer モジュールを書き間違えていた。

Public Function Transform( _

じゃなくて

Public Function IDocTransform_Transform( _

と書くのが正解だった。

おすすめ

VBAの日本語のエラーメッセージが意味不明だったら誤訳を疑え。英語原文のメッセージならきっとあっさり意味が通じる。

ちなみにわたしのWindow10のPCでVBAのメッセージを英語で表示させるには次のような設定が必要でした。

(1) Windos10に英語(米国)のLanguage Packをインストールした

OSSettingslanguage.png

(2) Excelのオプションで優先的に英語で表示するよう設定した

ExcelOptionLanguagepng.png

OSの再起動、Excelの再起動を何回か繰り返しました。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?