Измените макрос для применения к одному столбцу

У меня есть подпрограмма макроса, которую я хочу применить только к одному столбцу (F), а не ко всему листу, поэтому пользователи не получают сообщение об ошибке при вводе данных, отличных от кода размера.

Вот что у меня есть:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, r As Range
    vars1 = Array("xs", "s", "m", "l", "xl", "xxl", "1x", "2x", "3x", "os", "s/m", "l/xl")
    Set A = Range("F:F")
        Set Target = A
       For Each r In Target
        If IsNumeric(Application.Match(LCase(r.Value), vars1, 0)) Then
        Exit Sub
        Else
            MsgBox "Invalid Size entered into cell " & r.Address
        End If
        Next r
End Sub

Если я ввожу данные в любой другой столбец, я все равно получаю MsgBox.

0
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отредактированный код, у вас должно сработать что-то вроде этого:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rCheck As Range
    Dim rInvalids As Range
    Dim r As Range

    vars1 = Array("xs", "s", "m", "l", "xl", "xxl", "1x", "2x", "3x", "os", "s/m", "l/xl")

    Set rCheck = Intersect(Target, Me.Columns("F"))
    If Not rCheck Is Nothing Then
        For Each r In rCheck.Cells
            If Not IsNumeric(Application.Match(LCase(r.Value), vars1, 0)) Then
                If rInvalids Is Nothing Then
                    Set rInvalids = r
                Else
                    Set rInvalids = Union(rInvalids, r)
                End If
            End If
        Next r
        If Not rInvalids Is Nothing Then MsgBox "Invalid Size entered into cell " & rInvalids.Address
    End If

End Sub

Сработало отлично. Спасибо

jusbruers 14.09.2018 18:40

Другие вопросы по теме