• ベストアンサー

エクセルマクロでセル入力値の形式を判別する方法

あるセルに入っているデータが数値なのか文字列なのかを自動的に判別する手法はあるのでしょうか。 ご存知の方ご教示頂けますようお願いいたします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 #3 の merlionXXさんには、脱帽! 私は、以下のような方法にします。VBAでは、文字列の判定などは、VarType 関数を用います。 If Vartype(ActiveCell.Value) =vbString Then  '-処理 End If セルの数値は、Double型になりますので、vbDouble となります。 一応、主な種類 Sub TestType()  Select Case VarType(ActiveCell.Value)   Case vbString: MsgBox "文字列"   Case vbDouble: MsgBox "数値"   Case vbDate: MsgBox "日付か時間"   Case vbError: MsgBox "エラー値"   Case Else: MsgBox "その他"  End Select End Sub

tarobei
質問者

お礼

ありがとうございます。 わかりやすい回答に感謝申し上げます。

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

入力された値を判定します。 シートのモジュールに書いてみてください。 Private Sub Worksheet_Change(ByVal Target As Range) If IsError(Target) Then MsgBox "エラー!" Exit Sub End If Select Case Target.Value Case Is >= Chr(0) x = "文字列" Case Is = "" x = "なし" Case Else x = "数値" End Select MsgBox x End Sub

tarobei
質問者

お礼

う・・・すごい!って感じです。 マクロで連続処理をやりたかったのですが、これを使わせて頂けば できそうだと思います。 ありがとうございました。

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.2

 =CELL("type",A1) これでA1セルに入力されているのが文字列か数値かブランクか分かります。 日付など見た目は文字列でも実はシリアル値をセルの表示形式で日付として表示させていても 数値として判断できます。 詳しくは関数のヘルプを参照してください。

tarobei
質問者

お礼

ありがとうございました。早速試してみます。

回答No.1

ISNUMBER テストの対象が数値を参照するとき TRUE を返します ISTEXT テストの対象が文字列を参照するとき TRUE を返します。 これでいけそうですか? ヘルプにも載っています。

tarobei
質問者

お礼

回答ありがとうございました。 これはエクセルの中で使用する関数なのですね。 早速やってみます。ありがとうございました。

関連するQ&A