宏以清除数据验证单元格的内容,如果特定的单元格公式更改了它的值

时间:2018-06-28 06:26:10

标签: vba excel-vba excel

我在单元格N6中有一个数据验证列表。 列表是:房屋,常客,建筑商,私人。

单元格M8具有以下公式:= IF(N6 =“ Housing”,“ Grade:”,“”)

单元格N8中有一个数据验证列表。 列表是:第一,第二,第三。

如果单元格N6被更改或清除,我希望能够清除单元格N8。 我已经尝试过此VBA代码,但无法按预期清除单元格N8:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("N6")) Is Nothing Then
If Range("N6") <> "" Then Range("N8").ClearContents
End If
End Sub

我也尝试过此VBA代码,但它也无法清除单元格N8。

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$N6")) Is Nothing Then
    Range("N8").ClearContents
End If
End Sub

请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

在工作表的专用代码表中尝试一下(右键单击工作表名称选项卡,然后选择“查看代码”),

SELECT 
    (CASE
        WHEN p.product_status = '0' THEN 'Inactive'
        WHEN p.product_status = '1' THEN 'Active'
        ELSE 'Deleted'
    END) AS status,
    m.manufacturers_name,
    GROUP_CONCAT(mc.master_category_name) AS master_category_name,
    TRIM(p.product_name) AS product_name,
    p.product_status,
    p.product_id
FROM
    products p
        LEFT JOIN
    manufacturers m ON p.manufacturers_id = m.manufacturers_id
        LEFT JOIN
    master_categories mc ON FIND_IN_SET(mc.master_category_id,
            p.master_category_id) > 0
WHERE
    p.product_name != ''
GROUP BY p.product_id
ORDER BY TRIM(p.product_name) ASC
LIMIT 0 , 15

先前的错误尝试可能会使事件禁用。将Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("N6")) Is Nothing Then application.enableevents = false Range("N8") = vbnullstring application.enableevents = true End If End Sub 放入VBE的即时窗口中,然后按Enter。