Excel 私有子更改没有看到值

Excel 私有子更改没有看到值,excel,vba,Excel,Vba,我有一个Private子工作表\u 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 = "Standar

我有一个
Private子工作表\u 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
锁定,如果为空,则将其解锁。

使用
选择大小写将类似于此

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

在这里使用
Select Case
。如果x=a或x=b
等,您需要编写
,但我同意BigBen的意见。@SJR@BigBen谢谢这两个。我试了又试,试了又试,用
选择案例
,但无法使其工作。我放弃了,只是使用了@SJRThank提供的解决方案。我会继续学习并付诸实践。