こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル VBAを使って、セルの中身が文字か数値か判断したい

具体的に;
Workbooks.Open Filename:=ca3'対象ファイルを設定
Sheets("Sheet1").Select'シートを指定
Debug.Print Cells(2, 3)'セルを参照
でセルを参照するところまでできました
そこで、セル(例えばCells(2,3) )が文字が入って
いるか/数値が入っているか、判別するには
どうしたらいいのですか

投稿日時 - 2006-03-14 13:56:47

QNo.2028320

困ってます

質問者が選んだベストアンサー

「IsNumeric、って書いたら」とありますが、どのように書かれたのでしょうか?
例えば、VBAで

 If IsNumeric(Cells(2, 3)) = True Then
  data = Cells(2, 3)
 Else
  data = ""
 End If

のように書けば、エラーは出ないと思いますが。

投稿日時 - 2006-03-14 15:27:34

お礼

わかりました
エラーなく、出来ました
返事おくれてすみませんでした

投稿日時 - 2006-03-16 10:36:18

ANo.3

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

ちょっと割り込み失礼します。

#1 さんの書いた方法を、私は多様しますが、文字列であるか、数値であるかという判別というのは、あまりしたことがありません。それは、次に続くコードが重要だからです。

あれこれと、セルの情報を取りたいのでしたら、

Sub TestValueCheck()
  Dim msg As String
  Select Case VarType(Cells(2, 3))
  Case vbEmpty
   msg = "空"
  Case vbDouble
   msg = "数値"
  Case vbString
   msg = "文字列"
  Case vbBoolean
   msg = "ブーリアン値"
  Case vbError
   msg = "エラー値"
  End Select
  MsgBox msg & "です。"
End Sub


ということになりますかしらね。
通常は、

If Vartype(Cells(2,3).Value) = VbDouble Then
 '処理
End if

だけですね。

なお、IsNumeric 関数は、あくまでも、VBAの関数ですから、書式には関係がなく、数字であるという判別をします。数値であるのか、文字列かは関係がありません。

投稿日時 - 2006-03-14 16:26:01

お礼

よくわかりました
ていねいに、ありがとうございました

投稿日時 - 2006-03-16 10:38:44

ANo.2

セルに入っているのが文字か数値だけなら、IsNumeric関数を使えばいいと思います。
セルに空白もありえるのなら、IsEmpty関数も使った方がいいかもしれません。

投稿日時 - 2006-03-14 14:10:11

お礼

ありがとうございました
続けてお尋ねは失礼ですが、わかったらで!
-------
IsNumeric、って書いたら、関数が定義されてない
とエラーになりました
これを有効にするにはどこか設定が必要なんでしょうか
または、セルに直接呼び出す関数とVBAで使う関数
とちがうのでしょうか
--------
失礼します
Excell2003、WindowXPです

投稿日時 - 2006-03-14 14:40:05

下記で値の種類を表示します。
戻り値についてはHELPをみて下さい。
Sub test()
MsgBox VarType(Cells(2, 3))
End Sub

投稿日時 - 2006-03-14 14:09:34

お礼

ありがとうございました
できました

投稿日時 - 2006-03-14 14:34:38

あなたにオススメの質問