数字と数字のー(ハイフン)は消去しないVBA
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myAsc As Integer, InSP As Integer, myFlag As Integer
Dim myStr As String
If Intersect(Target, Range("B4:CH4")) Is Nothing Then Exit Sub
If Application.CountBlank(Target) > 0 Then Exit Sub
Application.EnableEvents = False
Target = StrConv(Target, vbUpperCase + vbNarrow)
myStr = Target.Value
InSP = 0: myFlag = 0
For i = 1 To Len(myStr)
myAsc = Asc(Mid(myStr, i, 1))
If Not (myAsc >= 65 And myAsc <= 90) Then
If Not (myAsc >= 48 And myAsc <= 57) Then
If myAsc = 32 Then
InSP = i
Else
MsgBox ("-(ハイフン)は使用出来ません。クリアします。" & "" & Mid(myStr, i, 1) & "")
Target.Select '
Selection.ClearContents
Application.EnableEvents = True
Exit Sub
End If
ElseIf myFlag = 0 And InSP = 0 Then
myFlag = i
End If
End If
Next
If myFlag <> 0 Then
Target.Value = Left(myStr, myFlag - 1) & Mid(myStr, myFlag, 99)
End If
Application.EnableEvents = True
End Sub
B4:CH4の範囲で半角英数字の小文字で入力したら自動で大文字となり、-(ハイフン)を入力したら文字がクリアされるVBAがあります。
質問ですが先ほどのVBAで英字と数字の間のー(ハイフン)はクリア対象となり、数字と数字の間にー(ハイフン)の場合はクリアしないVBAはどの様にすれば良いでしょうか?
※「GRE-879」の時は消去対象となり、「GRE868-76」の時は消去しない感じです。
お礼
kokoroneさん、ありがとうございました。