Изменение частной подписки не имеет значения - PullRequest
0 голосов
/ 10 июля 2020

У меня событие Private Sub Worksheet_Change. Диапазон E4 - это список проверки данных с 5 строковыми элементами. Для первых четырех я хочу ввести формулу в диапазоне F4:Z4. Для пятого элемента я хочу, чтобы диапазон F4:Z4 был пустым. Я все время получаю ошибку несоответствия типа с первой строкой IF. Что я делаю не так и как это исправить?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim x As Range
Set x = Range("E4")

If x.Value = "Standard 2020 CAD" Or "Standard 2020 USD" Or "Standard 2020 Pipeline CAD" Or "Standard 2020 Pipeline USD" Then
    If Not Application.Intersect(x, Range(Target.Address)) Is Nothing Then
        Range("F4:Z4").Formula = "=INDEX($XBR$4:$XBU$24,MATCH(F3,$XBQ$4:$XBQ24,0),MATCH($E$4,$XBR$3:$XBU$3,0))"
    End If
Else
    If Not Application.Intersect(x, Range(Target.Address)) Is Nothing Then
        Range("F4:Z4").Value = ""
    End If
End If
End Sub

Кроме того, я бы также хотел заблокировать диапазон F4:Z4, если он содержит формулы первые четыре элемента списка) и разблокируется, если он пуст.

1 Ответ

1 голос
/ 10 июля 2020

Использование Select Case будет таким.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim x As Range
Set x = Range("E4")

If Not Application.Intersect(x, Target) Is Nothing Then
    Select Case x.Value
        Case "Standard 2020 CAD", "Standard 2020 USD", "Standard 2020 Pipeline CAD", "Standard 2020 Pipeline USD"
            Range("F4:Z4").Formula = "=INDEX($XBR$4:$XBU$24,MATCH(F3,$XBQ$4:$XBQ24,0),MATCH($E$4,$XBR$3:$XBU$3,0))"
        Case Else
            Range("F4:Z4").ClearContents
    End Select
End If

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