|
▼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イベントでもいいかもしれません。
(コードがちょっとだけ違ってくるけど)
試してみて下さい。
|
|