VBAの条件分岐(IF文)で値が同じなのにFalse!?
セルA1の値は「500」、セルB1の値は「500」
If Range(“A1”).Value = Range(“B1”).Value then
Msgbox “True” & “ですっ!”
Else
Msgbox “False” & “ですっ!”
End If
結果 : [Falseです!]
ってことありますよね(汗)
これは多分、セルA1とB1の値が同じ500に見えて、端数(小数点以下)が異なるケースだと思います。
A1の見た目の値「500」 A1のEXCEL内部の値「500」
B1の見た目の値「500」 B1のEXCEL内部の値「500.00000000000001」
それで結果として、同じ値ではないと判断しているのです。
見た目は500なのに内部が違うとは困ったものです(汗)
手入力でA1に「500」、B1に「500」とした場合はきっちり「500」ですが、計算結果が500となっている場合は本当にきっちり「500」なのか疑ってかかる必要があります。
そのため、VBAで一致比較をするときは念のため比較前にRoundで丸めておくと確実です。
If range(“A1”).value = range(“B1”) then
↓
小数点0桁で丸める
↓
If Round(Range(“A1”).Value,0) =Round( Range(“B1”).Value,0) then
これで、万一端数が生じても比較で間違うことはありません。
「=」や「<>」といった一致比較をする場合は、事前に丸めておくことをオススメします。
※本記事についてのお問い合わせは、お受けしておりません。
著書の紹介
俺とオレ ~さよなら大嫌いな自分~
自分をよく見せたくてつま先立ちで歩き続ける。そんな日常を送ることに限界がきた俺は、胡散臭い男の紹介で「おばあちゃん」と暮らしはじめる。これまで抑圧してきた自分の内面と向き合い、導き出された答えとは……。仕事も恋も上手くいかない23歳の新社会人を変えた一夏の田舎暮らし。
人の目ばかり気になる、人間関係に疲れた、自分なんて大嫌いだ。そんなつま先立ちの人生から自分を解放しよう。
診断テストの紹介

自己分析診断テスト「ポテクト」で強み・弱みを徹底分析! 無料版あり