Как очистить данные из диапазона ячеек на основе текста других ячеек? - PullRequest
0 голосов
/ 15 апреля 2019

Прошли годы с тех пор, как я сделал VB и нашел похожие посты, касающиеся кода, который я пытаюсь создать, но, честно говоря, изо всех сил стараюсь адаптировать ответы к нужному мне макросу.

По сути, ячейка D6 будет иметь "Значение Y "или" N ", и мне нужно каждый раз, когда значение изменяется на" N ", диапазон D16: содержимое D500, подлежащее очистке.Я пытался

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$D$"6)) Is Nothing Then _
Sheets("Sheet1").Range("$D$16:$D$500").ClearContents
End Sub

, но не могу заставить его работать.Спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

У вас была неуместная цитата в исходном коде.Попробуйте это, который проверяет значение D6.Этот код должен находиться в соответствующем модуле листа - щелкните правой кнопкой мыши вкладку листа, просмотрите код и вставьте.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$6" Then
    If UCase(Target.Value) = "N" Then Sheets("Sheet1").Range("$D$16:$D$500").ClearContents
End If

End Sub
0 голосов
/ 15 апреля 2019

Просто для того, чтобы ваш код работал так, как вы были почти там.
Для лучшего кода, проверьте ответ SJR (включая часть "Y" / "N").

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("$D$" & 6)) Is Nothing Then  ' Here you were missing a "&" or the 6 had to be in the quote
        Sheets("Sheet1").Range("$D$16:$D$500").ClearContents
    End If 'here you forgot to close the End If

End Sub

Наконец, распространенной ошибкой здесь будет размещение кода в модуле вместо таблицы в VBA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...