| 
    
     |  | ▼NAO さん: こんばんは。
 例題として、ユーザーフォーム(Userform1)に
 テキストボックスを3つ貼り付けて下さい
 
 Textbox1 TEL用
 
 Textbox2 Address用
 
 Textbox3 Date用
 
 として・・・。
 
 当該フォームモジュールに
 '===================================================================
 Private Sub TextBox1_Change()
 'TEL用 半角数値のみ入力可能とする
 With TextBox1
 retcode = 1
 If IsNumeric(.Text) = True Then
 If StrConv(.Text, vbNarrow) = .Text Then
 retcode = 0
 End If
 End If
 If retcode <> 0 Then
 If Len(.Text) > 0 Then .Text = Left(.Text, Len(.Text) - 1)
 End If
 End With
 End Sub
 '=====================================================================
 Private Sub TextBox2_Change()
 'Address用 全角のみ入力可能
 With TextBox2
 retcode = 1
 If StrConv(.Text, vbWide) = .Text Then
 retcode = 0
 End If
 If retcode <> 0 Then
 If Len(.Text) > 0 Then .Text = Left(.Text, Len(.Text) - 1)
 End If
 End With
 End Sub
 '=====================================================================
 Private Sub TextBox3_Change()
 'Date用 半角数値のみ入力可能
 With TextBox3
 retcode = 1
 If IsNumeric(.Text) = True Then
 If StrConv(.Text, vbNarrow) = .Text Then
 retcode = 0
 End If
 End If
 If retcode <> 0 Then
 If Len(.Text) > 0 Then .Text = Left(.Text, Len(.Text) - 1)
 End If
 End With
 End Sub
 '==========================================================================
 Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 'Date用 文字列長が8で日付変換可能な場合セルにセット
 If KeyCode = 13 Then
 With TextBox3
 If Len(.Text) = 8 And IsDate(Format$(.Text, "0000""/""00""/""00")) Then
 Worksheets("sheet1").Cells(5, 1).Value = Format$(.Text, "0000""/""00""/""00")
 Worksheets("sheet1").Cells(5, 1).NumberFormatLocal = "ggge""年""m""月""d""日"""
 Else
 MsgBox "日付指定誤り"
 KeyCode = 0
 End If
 End With
 End If
 End Sub
 
 最後のTextbox3_KeyDownイベントは、Exitイベントでもいいかもしれません。
 (コードがちょっとだけ違ってくるけど)
 
 試してみて下さい。
 
 |  |