プロが教える店舗&オフィスのセキュリティ対策術

エクセルのセルに入力された値がUnicodeで****から****までの範囲内のみの文字で記述されているかのチェックをしたいのですが、
例:B3には電話番号を入力したいので半角数字と()のみで構成されているかをチェックする。

VBAでどのように記述すればよいのでしょうか?

もう一つ、
セルB3に文字を入力し終えた時または、B3にあるカーソルを他のセルに動かした時に
VBAが走る…と言う記述方法はあるのでしょうか?

ボタンを用意し、入力後[CHECK]を押すとVBAが動くと言うのは出来るのですが…

以上よろしくお願いいたします。

A 回答 (1件)

B3に変更があったら入力された値を調べています。

Worksheet_Changeを使っています。
B3があるシートのコードウインドウに貼り付けます。

ご参考に。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Dim dt As String  '入力データ
  Dim p As Integer  '文字の位置カウンタ

  '変更セルが単一の場合
  If Target.Count = 1 Then
    '変更セルがB3の場合
    If Target.Address = "$B$3" Then
      dt = Target.Text  'B3に入力した値
      '文字を調べる
      For p = 1 To Len(dt)
        If InStr("1234567890()", Mid(dt, p, 1)) = 0 Then
          '指定文字以外があったらメッセージを出す例
          MsgBox "不正な文字『 " & Mid(dt, p, 1) & " 』があります。"
          Exit For
        End If
      Next
    End If
  End If
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。助かりました。

お礼日時:2002/02/20 18:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!