人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBA についての質問です。

数字の配列がはいっているはずですが、間違って、文字列をいれていたらチェックしたいのです。
ところが下記のように、数字なのに、数字でないと判定されています。どういった関数をつかったら
いいのでしょうか?

Sub test()
Dim t
t = Split("3,1,-1,-3,間違って文字列", ",")
If Not Application.IsNumber(t(0)) Then
MsgBox t(0) & " は数字ではありません。"
End If
t = 3
If Application.IsNumber(t) Then
MsgBox t & " は数字です。"
End If
End Sub

●質問者: kaiketsu
●カテゴリ:コンピュータ
✍キーワード:application sub test VBA 数字
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●27ポイント

型依存しないIsNumeric関数を使い、下記のようにしてみてください。

If IsNumeric(t(0)) Then

2 ● SALINGER
●27ポイント
Application.IsNumber

ではなく

IsNumeric

を使ってみてください。


 Dim i As Long
 Dim t
  t = Split("3,1,-1,-3,間違って文字列", ",")
  
  For i = 0 To UBound(t)
 If IsNumeric(t(i)) Then
 MsgBox t(i) & "は数字です"
 Else
 MsgBox t(i) & "は数字ではありません"
 End If
 Next i

のようなコードにすれば正しく認識すると思います。

http://q.hatena.ne.jp/


3 ● beatgoeson
●26ポイント

Application.IsNumber を IsNumericに置き換えてください。



Sub test()

Dim t

t = Split("3,1,-1,-3,間違って文字列", ",")

If Not IsNumeric(t(0)) Then

MsgBox t(0) & " は数字ではありません。"

End If

t = 3

If IsNumeric(t) Then

MsgBox t & " は数字です。"

End If

End Sub


t = 3

t = "3"

とすると、Application.IsNumberはFALSEを返すと思いますが、Application.IsNumberは、その変数が数値を扱えるか否かをチェックするもので、値をチェックするものではありません。

http://officetanaka.net/excel/vba/function/IsNumeric.htm

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ