Excel VBAの条件式で発生していた型のエラーの原因を特定した

はじめに

こちらのサイトで問題を解こうとしたところ、作成途中のVBAで「型が一致しない」というエラーが発生した。

この記事では、今回発生したエラーの説明と、型とは何か、型をチェックする方法などについて書いていく。

Excel VBAは、今後プログラマーとしてキャリアを切り開いていくために、武器にしていきたい。

もちろん、VBAだけ出来るだけでは市場価値は高まらないと思う。

しかし、VBAの記事を書き続けることで、自信を付けて、弾みをつけたい

そんな思いで、この記事を書いていく。

コードを実行するとエラーが発生した

こちらのコードを実行すると、「型が一致しません。」とのエラーが出た。

デバッグを押すと、以下の黄色の箇所に問題があることが分かった。

おそらく、Range(“E8:E12”) と 2018/10/31の型が合っていない。

型とは

Excel VBAにおける型とは、何なのだろうか?

こちらのサイトによると、以下のような型が存在する。

  • 整数型(Integer)
  • 長整数型(Long)
  • 通貨型(Currency)
  • 単精度浮動小数点数型(Single)
  • 倍精度浮動小数点数型(Double)
  • 文字列型(String)
  • 日付型(Date)
  • ブール型(Boolean)
  • オブジェクト型(Object)
  • バリアント型(Variant)

先ほどのエラーの原因は、「Range(“E8:E12”)がオブジェクト型で、2018/10/31が文字列型であること」と考えられる。

型チェックする方法

それでは、Excel VBAで型をチェックするには、どうすればいいのだろうか?

こちらのサイトによると、TypeNameを使用するらしい。

Debug.Printの使い方

Debug.Printを使うと、出力結果を確認することができる。

こちらのサイトによると、イミディエイトウィンドウという場所に、返り値を出力するらしい。

イミディエイトウインドウはどこから開けるのか?

VBAの下の方に色々なウインドウ(ローカル、ウォッチ)が表示されていたが、ばつ印をクリックすると、イミディエイトウインドウが出てきた。

試しに、以下の処理を書いていたので、Integerが出力されていた。

Debug.Printの後に書いたものが、イミディエイトウインドウに表示される。

イミディエイトウインドウを開く方法

こちらのサイトでは、Control + Gを押せば、イミディエイトウインドウが表示されると書いてある。

しかし、macを使用しているので、この方法では開くことが出来なかった。

上部のメニューから、表示を選択し、イミディエイト ウインドウを選択すると開くことができる。

「^ ⌘ G」のショートカットでも開くことができる。

「^」は「Control」のことだ。

「⌘」は「Command」のこと。

Range(“E8:E12”)の型を調べる

以下のように、TypeNameしたものを、Debug.Printでイミディエイトウインドウに表示させよう。

実行すると、Rangeと表示された。

2018/10/31の型を調べる

今度は、2018/10/31を見ていこう。

実行すると、Stringと表示された。

型のエラーが発生していた原因

再び、以下のエラーが発生していた原因を探ろう。

条件式の左辺のRange(“E8:E12”)がRangeであるのに対し、右辺の2018/10/31がStringであり、型が一致していないというのが原因と考えられる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です