Ловля типа 13 несоответствие - PullRequest
0 голосов
/ 08 апреля 2020

Следующий код срабатывает каждый раз, когда пользователь выходит из ячейки Excel. Затем он проверяет, соответствует ли значение ячейки выражению регулярного выражения. Это работает.

Если пользователь выбирает диапазон ячеек и, возможно, удаляет содержимое - я получаю ошибку VBA Несоответствие типа 13. Как я могу поставить тест, чтобы пользователь не получил ошибку.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal target As Range)
Dim strPattern As String: strPattern = "^[a-z]{2,4}[0-9]{2,4}$"
Dim regEx As New RegExp
Dim strInput As String
Dim Myrange As Range

Set Myrange = ActiveSheet.Range("A1")

If target.Value <> "" Then
    strInput = LCase(target.Value)
    With regEx

В этой строке выдается ошибка типа 13:

    If target.Value <> "" Then

Необходимо включить проверку, что target.value - это ячейка, а не диапазон перед прогрессом.

1 Ответ

1 голос
/ 08 апреля 2020

.Value диапазона из нескольких ячеек - это массив 2D Variant, поэтому его нельзя сравнивать с "".

. Одно исправление - добавить

If Target.CountLarge > 1 Then Exit Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...