|
IsNumeric関数はVariant型の値を引数にとります。
何もセルに入力されていないときのRangeオブジェクトのValueプロパティの値は
Dim v As Variant
v = Range("A1").Value
として確認してみるとわかると思いますが、"Empty値"となります。
Empty値をIsNumeric関数の引数に指定するとTrueがかえります。
一方、Variant型変数ではなくString型変数にEmpty値を入れると
Dim v As Variant
Dim s As String
v = Range("A1").Value
s = v
s は"空文字"になってしまいます。
空文字をIsNumeric関数の引数に指定するとFalseがかえります。
つまり、String型変数に入れることによってEmpty値の扱いが違う(?)ため
IsNumeric関数の結果が変わってしまうのです。
(String型変数で表せないEmpty値をString型変数に入れることによって、情報が変わってしまう。)
String型変数ではなくVariant型変数で渡すか、
もとから空文字(Empty値)かを見てから判定するかにすればよいでしょう。
ちなみに
>If IsNumeric(Range("A1")) Then
Valueプロパティは省略しないほうが良いでしょう。
|
|