If文などで、「Is Nothing」を使っていますか?
Is Nothingを使ってエラーが出てしまう場面は意外を多いです。
今回は、Is Nothingを使ったときに「型が一致しません」とのエラーが表示されてしまうときの対処方法について徹底的に解説していきます。
「Is Nothing」で「 型が一致しません」のエラーになるときの対処方法
「型が一致しません」の原因
「型が一致しません」のエラーが表示されてしまう原因としては、
変数の型が一致していないNothingと一致していない
ということが挙げられます(そのまんまですが、重要なことです)。
これを以下に解決していくか。。について次の項目で説明していきます。
Nothingの型に一致させるためには
解決方法としては、変数とNothingの型を一致させることです。
Nothingの型は、オブジェクト型です。
つまり、Is Nothingしたい変数はオブジェクト型になっていないと、Is Nothingは使えないのです。
もし使った場合は、「型が一致しません」のエラーが発生してしまうのです。
変数が何の型になっているのかを確認するコードが以下のものになります。
変数の型を確認するコード:
Sub 変数の型を確認するコード()
Debug.Print VarType(変数)
End Sub
イミディエイトウインドウに変数の型を表す数字が表示されます。
対応表は以下の表になります。
値 | 型・内容 |
0 | Empty値 |
1 | Null値 |
2 | 整数型 |
3 | 長整数型 |
4 | 単精度浮動小数点型 |
5 | 倍制度浮動小数点型 |
6 | 通貨型 |
7 | 日付型 |
8 | 文字列型 |
9 | オブジェクト型 |
10 | エラー値 |
11 | ブール型 |
12 | バリアント型 |
13 | 非OLEオートメーションオブジェクト |
14 | 10進数型 |
17 | バイト型 |
8192 | 配列 |
イミディエイトウインドウに返ってきた値が「9」になっていれば、変数の型がオブジェクト型であり、Nothingと型が一致することになります。
もし返ってきた値が「9」以外ならば、「型が一致しません」のエラーが発生してしまいますので、変数をよく見直す必要があります。
ちなみに、「Is Nothing」の「Is」は、「Is 演算子」といい、オブジェクトに対してのみ使える比較演算子です。
左辺で示されるオブジェクトと右辺で示されるオブジェクトが同じものなら True 、そうでなければ False という戻り値が得られます。
また、Nothing は、オブジェクト型の変数の初期値にもなっていますが、「特にどのオブジェクトも示していない」という状態のことを表します。
【まとめ】「Is Nothing」で「 型が一致しません」のエラーになるときの対処方法
「Is Nothing」で「 型が一致しません」のエラーになる原因は、変数の型がオブジェクト型になっていないことが原因です。
変数の型を確認するためには、
Debug.Print VarType(変数)
などのコードを使用します。
Is Nothingはエクセルマクロには必須ですので、ぜひ覚えておいてください。VBAの幅が広がること間違いなしです。
参考:Excel VBA入門 その53:「Select Caseに対応するCaseがありません。」の原因・対処方法
コメント
[…] […]