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提供的解决方案。我会继续学习并付诸实践。