私は、アドレスデータを入力するためにユーザーフォームを作成しています。私はアドレス名のテキストボックス、道路、通りなどを選択するためのコンボボックス、奇数と偶数の4つの数値ボックスを持っています。Ifステートメントを使用してセルをクリアする
数字は既に入力されているが、ユーザーがボックスを「〜」ボックスの数よりも大きな値に変更した場合、VBAに「〜」ボックスの内容をクリアする問題が発生しています。ここで
は、私が現在持っているコードです:明確にするために
Private Sub txtstreet_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 65 To 90
Case 97 To 122
Case 32
Case 127
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub UserForm_Initialize()
roaddesciptor.List = Array("ROAD", "STREET", "WAY", "AVENUE", "DRIVE", "GROVE", "LANE", "GARDENS", "PLACE", "CRESENT", "CLOSE", "SQUARE", "HILL", "CIRCUS", "MEWS", "VALE", "RISE", "ROW", "MEAD", "WHARF")
roaddesciptor.ListIndex = 0
End Sub
Private Sub txtaddoddfrom_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub txtaddoddfrom_AfterUpdate()
If txtaddoddfrom.Value < txtaddoddto.Value Or txtaddoddto = "" And txtaddoddfrom.Value Mod 2 = 1 Then Exit Sub
If txtaddoddfrom.Value Mod 2 <> 1 Or txtaddoddfrom.Value > txtaddoddto.Value Then txtaddoddfrom = ""
'Else: txtaddoddfrom = ""
End Sub
Private Sub txtaddoddto_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub txtaddoddto_AfterUpdate()
If txtaddoddto.Value Mod 2 = 1 And txtaddoddto.Value >= txtaddoddfrom.Value Then Exit Sub
If txtaddoddto.Value Mod 2 <> 1 Or txtaddoddto.Value < txtaddoddfrom.Value Then txtaddoddto = ""
End Sub
Private Sub txtaddevenfrom_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub txtaddevenfrom_AfterUpdate()
If txtaddevenfrom.Value < txtaddevento.Value Or txtaddevento = 0 And txtaddevenfrom.Value Mod 2 <> 1 Then Exit Sub
If txtaddevenfrom.Value Mod 2 = 1 Or txtaddevenfrom.Value > txtaddevento.Value Then txtaddevenfrom = ""
End Sub
Private Sub txtaddevento_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub txtaddevento_AfterUpdate()
If txtaddevento.Value Mod 2 <> 1 And txtaddevento.Value >= txtaddevenfrom.Value Then Exit Sub
If txtaddevento.Value Mod 2 = 1 Or txtaddevento.Value < txtaddevenfrom.Value Then txtaddevento = ""
End Sub
あなたは 'If Not IsNumeric(Chr(KeyAscii))を使用してコードを短縮することができます。次にKeyAscii = 0'を入力して数値を入力します。 .....また、このタイプの文を使用すると、コードを明確にすることができます。 '' Asc( "a")からAsc( "z") '....' case 127'行は誤ってインクルードされているようです – jsotola