papinianus2019/02/01 13:11https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/comparison-operators この辺をみると、string Variantと数値の比較で、string Variantが数値と評価できないときはType Mismatchだって言ってるのに、実際はstring Variantとnumeric Variantの比較みたいな結果になるってことなんですね
jawa2019/02/04 05:29今回の比較は右辺が数値型、左辺がvariant型です。 papinianusさんコメントにあるリファレンスにも記載されていますが、Variant型の値が数値として認識できるか(⇒IsNumeric)も判断材料に含まれているようです。 ですので、ttyp03さんのサンプルコードでS="4"のような全角数値文字列を指定した場合、`If S >= 5 Then`の判断結果は文字列"5"との比較ではなく数値5との比較となり、Falseが返されます。 S="ああああ"で比較した場合、右辺数値を100桁(1E+100)くらい大きくしても左辺の方が大きいと判断され、結果Trueとなるようです。 この結果から実際の判定は、`Type Mismatch`となる比較の場合は「文字列の方が大きい」と判断される、ということが推測されます。
2019/02/01 13:11
2019/02/04 05:29