- ベストアンサー
エクセルマクロでセル入力値の形式を判別する方法
あるセルに入っているデータが数値なのか文字列なのかを自動的に判別する手法はあるのでしょうか。 ご存知の方ご教示頂けますようお願いいたします。
- みんなの回答 (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
その他の回答 (3)
- merlionXX
- ベストアンサー率48% (1930/4007)
入力された値を判定します。 シートのモジュールに書いてみてください。 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
お礼
う・・・すごい!って感じです。 マクロで連続処理をやりたかったのですが、これを使わせて頂けば できそうだと思います。 ありがとうございました。
- Cupper
- ベストアンサー率32% (2123/6444)
=CELL("type",A1) これでA1セルに入力されているのが文字列か数値かブランクか分かります。 日付など見た目は文字列でも実はシリアル値をセルの表示形式で日付として表示させていても 数値として判断できます。 詳しくは関数のヘルプを参照してください。
お礼
ありがとうございました。早速試してみます。
- yuji_from_kyoto
- ベストアンサー率34% (44/127)
ISNUMBER テストの対象が数値を参照するとき TRUE を返します ISTEXT テストの対象が文字列を参照するとき TRUE を返します。 これでいけそうですか? ヘルプにも載っています。
お礼
回答ありがとうございました。 これはエクセルの中で使用する関数なのですね。 早速やってみます。ありがとうございました。
お礼
ありがとうございます。 わかりやすい回答に感謝申し上げます。