V
ViViC via OfficeKB.com
Hi all,
I've been using the code below to enter a set of numbers & alpha characters
in the first part of set. Has been working near perfect until I noticed I can
tab out of textbox after entering one character. You should not be able to
exit until the first two characters in set have been entered. My question
where do I place the code to check the first 2 characters in the set. Here
the code
Private Sub txtInvClaim_Change()
Dim i As Long
Dim s As String
Dim ba() As Byte ' byte-array
Static bExit As Boolean
If Not bExit Then
s = UCase(Me.txtInvClaim.Text)
ba = s
s = ""
For i = 0 To UBound(ba) Step 2
If ba(i + 1) = 0 Then
Select Case ba(i)
Case 48 To 57
' digits 0-9
s = s & Chr(ba(i))
Case 65 To 90
'letters only in 1st 2 characters
If i <= 3 Then
s = s & Chr(ba(i))
End If
End Select
End If
Next
If Len(s) > 1 Then
s = Left$(s, 2) & "/" & Right$("00000" & Mid$(s, 3, Len(s) - 2), 5)
End If
If txtInvClaim.Text <> s Then
bExit = True
txtInvClaim.Text = s
End If
End If
bExit = False
End Sub
Private Sub txtInvClaim_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not OkaytoExit Then
If Me.txtInvClaim.Value = "" Then
Cancel = True
MsgboxResult = MsgBox("Please enter RiskCover Claim No",
vbExclamation, "Shared Services")
Me.txtInvClaim.SetFocus
Exit Sub
End If
End If
End Sub
Private Sub txtInvClaim_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
OkaytoExit = False
End Sub
Private Sub txtInvClaim_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
With txtInvClaim
LastPosition = .SelStart
End With
End Sub
Private Sub txtInvClaim_MouseDown(ByVal Button As Integer, ByVal Shift As
Integer, _
ByVal x As Single, ByVal Y As Single)
With txtInvClaim
LastPosition = .SelStart
End With
End Sub
Many thanks for the help in advance
ViViC
I've been using the code below to enter a set of numbers & alpha characters
in the first part of set. Has been working near perfect until I noticed I can
tab out of textbox after entering one character. You should not be able to
exit until the first two characters in set have been entered. My question
where do I place the code to check the first 2 characters in the set. Here
the code
Private Sub txtInvClaim_Change()
Dim i As Long
Dim s As String
Dim ba() As Byte ' byte-array
Static bExit As Boolean
If Not bExit Then
s = UCase(Me.txtInvClaim.Text)
ba = s
s = ""
For i = 0 To UBound(ba) Step 2
If ba(i + 1) = 0 Then
Select Case ba(i)
Case 48 To 57
' digits 0-9
s = s & Chr(ba(i))
Case 65 To 90
'letters only in 1st 2 characters
If i <= 3 Then
s = s & Chr(ba(i))
End If
End Select
End If
Next
If Len(s) > 1 Then
s = Left$(s, 2) & "/" & Right$("00000" & Mid$(s, 3, Len(s) - 2), 5)
End If
If txtInvClaim.Text <> s Then
bExit = True
txtInvClaim.Text = s
End If
End If
bExit = False
End Sub
Private Sub txtInvClaim_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not OkaytoExit Then
If Me.txtInvClaim.Value = "" Then
Cancel = True
MsgboxResult = MsgBox("Please enter RiskCover Claim No",
vbExclamation, "Shared Services")
Me.txtInvClaim.SetFocus
Exit Sub
End If
End If
End Sub
Private Sub txtInvClaim_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
OkaytoExit = False
End Sub
Private Sub txtInvClaim_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
With txtInvClaim
LastPosition = .SelStart
End With
End Sub
Private Sub txtInvClaim_MouseDown(ByVal Button As Integer, ByVal Shift As
Integer, _
ByVal x As Single, ByVal Y As Single)
With txtInvClaim
LastPosition = .SelStart
End With
End Sub
Many thanks for the help in advance
ViViC