質問: ``` Sub test() If Cells(1, 1).Value >= 5 Then MsgBox ("正しい") Else MsgBox ("間違い") End If End Sub ``` お世話になっております。 A1のセルに適当にああああとか入力したとして 上記コードで、何故 Cells(1, 1).Value >= 5 とかでも 正しいになってしまうのでしょうか。 よろしくお願いいたします。
回答: よくこんなの見つけましたねぇ。自分もなんでか全然わからなかったので、ちょっとGoogleで 「excel text cell if compare to value」 で検索してみたところ、海外の技術系掲示板 stackoverflowでとりあえずの原因について言及されているのを見つけました(下記リンク)。 * Excel IF statement Comparing text with number > > For the Excel compare operators (e.g. <, =, >), number values are less than text values which are less than logical values. > > > なんでも「文字と数値を比較した場合、文字の方が大きくなる」とのこと。だから、書かれたソースの「>= 5」を「0」にしても「-40」にしても「100」にしても、結果はすべてTrueになりました。 このExcelの比較におけるルールの根本的な理由については詳しい方の登場を待ちましょう(少し調べたけれど見つけられず......)。