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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/07/01 07:56:39
  • 終了:2009/07/08 08:00:02

回答(3件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/07/01 08:13:35

ポイント27pt

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

If IsNumeric(t(0)) Then
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692009/07/01 08:26:05

ポイント27pt
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/

id:beatgoeson No.3

beatgoeson回答回数128ベストアンサー獲得回数142009/07/01 08:26:38

ポイント26pt

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません