Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


29452 / 76732 ←次へ | 前へ→

【52561】Re:IsNumericに関して
回答  Blue  - 07/11/20(火) 1:51 -

引用なし
パスワード
   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プロパティは省略しないほうが良いでしょう。

0 hits

【52560】IsNumericに関して おタケ 07/11/19(月) 23:36 質問
【52561】Re:IsNumericに関して Blue 07/11/20(火) 1:51 回答
【52564】Re:IsNumericに関して Jaka 07/11/20(火) 9:43 発言

29452 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free