Я пытаюсь разработать маску для своих ячеек, которая в качестве требования должна быть только текстовой или цифровой.Формат маски ячейки
У меня также есть чистая кнопка для сброса соответствующих ячеек. Это моя проблема. Маска проверки макросов работает хорошо, но если я использую мою чистую кнопку, и они становятся пустыми, тот же контрольный макрос говорит, что пустая строка не принимается.
После моего кода:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Whoa
Application.EnableEvents = False
If Not Intersect(Target, Range("C5")) Is Nothing Then
If Not IsNumeric(Range("C5").Value) Then
MsgBox "Valor inválido."
Application.Undo
GoTo LetsContinue
End If
Range("C5").Value = "" & Format(Range("C5").Value, "")
End If
If Not Intersect(Target, Range("C7")) Is Nothing Then
'apaga se nao for o numero
If Not IsNumeric(Range("C7").Value) Then
MsgBox "Valor inválido."
Application.Undo
GoTo LetsContinue
End If
Range("C7").Value = "'" & Format(Range("C7").Value, "")
End If
If Not Intersect(Target, Range("I9")) Is Nothing Then
'apaga se nao for o numero
If Not IsNumeric(Range("I9").Value) Then
MsgBox "Valor inválido."
Application.Undo
GoTo LetsContinue
End If
End If
If Not Intersect(Target, Range("I11")) Is Nothing Then
'apaga se nao for o numero
If Not IsNumeric(Range("I11").Value) Then
MsgBox "Valor inválido."
Application.Undo
GoTo LetsContinue
End If
End If
If Not Intersect(Target, Range("I13")) Is Nothing Then
'apaga se nao for o numero
If Not IsNumeric(Range("I13").Value) Then
MsgBox "Valor inválido."
Application.Undo
GoTo LetsContinue
End If
End If
If Not Intersect(Target, Range("E15")) Is Nothing Then
'apaga se nao for o numero
If Not IsNumeric(Range("E15").Value) Then
MsgBox "Valor inválido."
Application.Undo
GoTo LetsContinue
End If
End If
If Not Application.IsText(Worksheets("Formulário").Range("C9")) Then
MsgBox "Valor inválido."
Application.Undo
GoTo LetsContinue
End If
LetsContinue:
Application.EnableEvents = Truea
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
Function IsAlpha(str As String) As Boolean
Dim c As String
Dim I As Integer
For I = 1 To Len(str)
c = Mid(str, I, 1)
Select Case Asc(c)
Case 32, 65 To 90, 97 To 122
IsAlpha = True
Case Else
IsAlpha = False
End Select
If Not IsAlpha Then Exit For
Next I
End Function