Я написал этот код, чтобы помочь с проверкой ячеек почтового индекса в нашей форме поставщика. Я хочу, чтобы он подтвердил, когда перейти к следующей ячейке. Я получаю ошибку 438 во время выполнения: объект не поддерживает это свойство или метод, когда я пытаюсь перейти к следующей ячейке. Мне нужно это для проверки всех почтовых индексов США и Канады (используется английский).
Я пытался сделать это с проверкой данных, и у меня могут быть США или Канада, но не оба.
Private Sub worksheet_selectionchange(ByVal target As Range)
If Selection.Count = 1 Then
'Erm, nothing to do here....
ElseIf Not Intersect(target, Range("B39,B50")) Is Nothing Then
Exit Sub
End If
Dim searchRange As Excel.Range
Dim cell As Variant
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
.Pattern = "^(\d{5}(-\d{4})?|[A-CEGHJ-NPRSTVXY]\d[A-CEGHJ-NPRSTV-Z] ?\d[A-CEGHJ-NPRSTV-Z]\d)$"
.Global = True
.MultiLine = True
End With
Set searchRange = ActiveSheet.Range("B39,B50")
For Each cell In searchRange.Cells
If RegEx.IsMatch(subjectString, "^(\d{5}(-\d{4})?|[A-CEGHJ-NPRSTVXY]\d[A-CEGHJ-NPRSTV-Z] ?\d[A-CEGHJ-NPRSTV-Z]\d)$") Then
MsgBox ("Valid ZIP code")
Else
MsgBox ("Invalid ZIP code")
End If
Next cell
Set searchRange = Nothing
Set RegEx = Nothing
End Sub
Строка отладки:
If RegEx.IsMatch(subjectString, "^(\d{5}(-\d{4})?|[A-CEGHJ-NPRSTVXY]\d[A-CEGHJ-NPRSTV-Z] ?\d[A-CEGHJ-NPRSTV-Z]\d)$") Then
Мне все равно, пользуюсь ли я проверкой данных или VBA, мне просто нужно что-то для проверки. Пожалуйста, будьте внимательны в своих ответах. Я все еще довольно "зеленый" с VBA и Regex.