エラーが発生した際に、そのエラーメッセージをコピーする方法を紹介します。
例えば、
Cells(0, 0) = 1
このマクロを実行すると、
これが出ますよね。
原因や解決策を調べるときに、このエラーメッセージをコピーしたいのですが、
このエラーウィンドウはテキストをコピーできません。
ということで、このメッセージをコピーする方法を紹介します。
まずはここで[デバッグ]を押します。
コードウィンドウが開いたら、Ctrl + G を押したり、ウィンドウを直接クリックして「イミディエイトウィンドウ」に移動します。
そしてイミディエイトウィンドウに、
?Err.Description
を入力してEnterすると、
このようにエラーメッセージが出力されます。これをコピってググってきてください。
これでエラーメッセージを簡単に調べることができますね。
コードの解説
は、今回は割愛します。
勉強したい人は、「Errオブジェクト」を調べてみてください。
ぶっちゃけErrオブジェクトなんてどうでもいいんですよ。
エラーメッセージを調べたいようなひっ迫した状況で、
このオブジェクトの勉強をする余裕なんかないのです(笑)
このオブジェクトの本来の目的に遭遇したら、どうせその時勉強しますから、
今回使う「?Err.Description」はおまじないだと思って使ってOKです。
ということで、おまじないとして使う方法を解説します。
えmsg | ?Err.Description |
---|
と、ユーザー辞書(変換)に登録しておきましょう。
これでおまじないの詠唱を破棄できるので、このコードも覚える必要ナシ
えmsg | ?"VBA " & Err.Description |
---|
と、もう検索する前提で「VBA 」をつけちゃってもいいです。
読みは「エラーメッセージ」の略ですが、まあ好きなものにしてください。
この手順だけ覚えたら、Errオブジェクトなる謎の物体は、記憶から消してOKです。
?の使い方は覚えておくべき
イミディエイトウィンドウを使っている方は、
?Err.Description
この「?」だけは覚えておくとよいです。
この「?」は、単純に「Debug.Print」を省略呼び出しできるしくみです。
↑のコードは、
Debug.Print Err.Description
これと同じと言うことです。
だから結果が、そのままそこ(イミディエイトウィンドウ)に出たわけですね。
イミディエイトウィンドウに「?○○」はものすごく使うことになりますので、
こちらは確実に習得しておきましょう。
例えばさっきのエラーが、
合計 = 合計 + Cells(R, 3)
このコードで出た時、
?Cells(R, 3).Value
これを実行して値を調べたり、
?R
このように変数の値を聞いて、エラーが出た値や場所を調べるというのは必須のスキルになります。
知らなかった方は、この機会に覚えてしまってください。
まあ、今回のような場合は
と、カーソルを置くだけで見れますけどね。
これができないものは、「?」で調べることになります。
例えば迷子の迷子のセルさんが、どのシートのものかわからなくなったときに、
?処理セル.Parent.Name
と、「あなたのおうちはどこ?」って聞いたりできます。
これも「?」をつけずに、
処理セル.Parent.Activate
と、いきなり家宅捜索に入ってもいいですけどね。
エラーメッセージをググって概要をつかんだら、
そのあとは実際に起きたことを調べることになります。
そのときイミディエイトウィンドウに慣れていると解決が早まりますので、
こまめに使っていきましょう。
おまけ:ヘルプさんもいる(いらない)
今回はイミディエイトウィンドウを活用する方法を紹介しましたが、
そもそも最初の画面で、
これで「ヘルプ」を押すと、そのヘルプに飛べます。
それならググるまでもなく解説を見れるじゃん!
ですが、残念ながらヘルプはクソの役にも立ちません。
もともと説明がユーザー置いてけぼりで正確に書く必要があるあまり難しすぎて、
役に立たない活用できるようになるまで訓練が必要なヘルプさんですが、
特にエラーメッセージでは何の解決にもならないことが延々と書いてあります。
まあ書いてあるのは「エラーの仕様」ですからね(笑)
解決法とか、どんな時によく出るかみたいな情報は一切ないので、
残念ながら参考にはなりません。
でもせめて、「エラーメッセージをコピーする」ために開くのはアリなのでは?
と思いきや、なんとエラーメッセージすら違うことが多々あります(笑)
そのちょっと違うエラーメッセージをコピーして検索すると、
お目当てのページが出てこず、そのヘルプが検索1位に表示されたりしてイラっとします。
もっとひどいと、そのエラーのページが存在せず、
「ソリューションを開発し、Excelをカスタマイズする」
とか言われます(#^ω^)
まあどうせエラーを調べた後は、イミディエイトウィンドウを活用して現地調査になりますからね。
あきらめて最初からイミディエイトを使っていきましょう。