私は3つの異なるPrivateSub関数を作成しましたが、これらはすべて同じことを行います。PrivateSubtxt_noRooms_KeyPressとPrivateSub txt_length_KeyPressは、ユーザーが参照テキストフィールドに値1〜9のみを入力できるようにしますが、 PrivateSubtxt_studentNo_KeyPressではユーザーが入力できます。参照されるテキストフィールドに0〜9の値を入力します。
これらの3つの関数をマージして、参照されたセルを引き続きサポートし、同じ条件を維持する方法はありますか?コードをより効率的にするためにこれを行いたいと思います。
Private Sub txt_noRooms_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' Restrict entry to txt_noRooms
Select Case KeyAscii
Case Asc("1") To Asc("9")
Case Asc("-")
If InStr(1, Me.txt_noRooms.Text, "-") > 0 Or Me.txt_noRooms.SelStart > 0 Then
KeyAscii = 0
End If
Case Asc(".")
If InStr(1, Me.txt_noRooms.Text, ".") > 0 Then
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub txt_length_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' Restrict entry to txt_length
Select Case KeyAscii
Case Asc("1") To Asc("9")
Case Asc("-")
If InStr(1, Me.txt_length.Text, "-") > 0 Or Me.txt_length.SelStart > 0 Then
KeyAscii = 0
End If
Case Asc(".")
If InStr(1, Me.txt_length.Text, ".") > 0 Then
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub txt_studentNo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' Restrict entry to txt_studentNo
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc("-")
If InStr(1, Me.txt_studentNo.Text, "-") > 0 Or Me.txt_studentNo.SelStart > 0 Then
KeyAscii = 0
End If
Case Asc(".")
If InStr(1, Me.txt_studentNo.Text, ".") > 0 Then
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End Sub