| 
    
     |  | ▼eriko さん: こんにちは。
 
 もっと簡単な方法があるかもしれませんがとりあえず。
 前後のスペースは除いた文字列を1文字づつ判断するようにしています。
 OK_CHARにない文字があればエラーメッセージを表示します。
 
 
 Option Explicit
 Const OK_CHAR = "0123456789-"
 Sub test()
 
 '未入力
 Call CheckNo("")
 'スペースのみ
 Call CheckNo(" ")
 '数字のみ
 Call CheckNo("123")
 '前にスペース + 数字
 Call CheckNo(" 123")
 '前にスペース + 数字 + 後にスペース
 Call CheckNo(" 123 ")
 '間にスペース
 Call CheckNo(" 12 3 ")
 '数字以外入力
 Call CheckNo("12a3")
 '数字以外入力
 Call CheckNo("12d3")
 '数字、'-'混在
 Call CheckNo("123-456-789")
 ''-'のみ
 Call CheckNo("----")
 End Sub
 
 Sub CheckNo(ByVal pStr As String)
 Dim sT As String
 Dim nI As Integer
 sT = Trim(pStr)
 
 For nI = 1 To Len(sT)
 If InStr(OK_CHAR, Mid(sT, nI, 1)) = 0 Then
 MsgBox pStr & Chr(10) & "数字または'-'以外が入力されています。"
 Exit For
 End If
 Next nI
 End Sub
 
 
 |  |