当父列表更改时,VBA 清除依赖下拉列表

问题描述 投票:0回答:1

我根本不懂 VBA,但正在从各种在线教程中拼凑一些花絮。我可以采纳你的建议,因为我根本无法得到我需要的结果。在下面的示例中,单元格 A10 包含一个主下拉列表(如果重要的话,A10-E10 是合并单元格,以便显示每个下拉选项的完整长度)。当选择“我们认为您存入的支票可能因以下原因而无法付款”时,A12 中会出现一个相关下拉列表,也必须从中进行选择。我正在尝试编写一个代码,当在 A10 中选择任何其他选项时,该代码将清除 A12 的内容。出于同样的原因,A12-E12 也是合并单元格。

enter image description here

我尝试了一些变体,但我尝试的基本代码如下。您对我的代码哪里出了问题有什么建议吗?我收到运行时错误 1004“我们无法对合并单元格执行此操作。”如果您能提供有关纠正此问题的指导,我将不胜感激。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("$A$10") <> "We believe a check you deposited may not be paid for the following reason:" Then
    Range("$A$12").ClearContents
    End If
End Sub

当 A10 的选择不等于“我们认为您存入的支票可能因以下原因而无法支付时,它会清除单元格 A12:”

excel vba validation drop-down-menu range
1个回答
0
投票

您需要清除整个合并范围。

请注意,修改工作表将导致更改事件在您当前拥有的无限循环中触发。标准方法是使用

Application.EnableEvents = False
禁用事件。这里,建议先测试
A10
是否被改变(使用
Intersect
),这也可以防止无限循环。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Me.Range("A10"), Target) Is Nothing Then Exit Sub
    
    If Me.Range("A10") <> "We believe a check you deposited may not be paid for the following reason:" Then
        Me.Range("A12:E12").ClearContents
    End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.