通过删除合并单元格的内容触发 Worksheet_Change

Chr*_*sen 3 excel vba

我编写了一段代码,当单元格 L3 更改时,它会根据 L3 的内容依次更改一系列单元格。

\n\n

L3 是一个从 L3 到 N4 的合并单元格,尽管如此,代码仍然可以正常工作,直到用户删除内容而不是输入新内容。

\n\n

以下代码对于未合并的单元格工作得非常好:

\n\n
Sub Worksheet_Change(ByVal Target As Range)\n\n        If Target.Address = Range("L3").Address Then\n\n             If Range("L3") = Sheets("Formatering").Range("F27") Then\n                 Tankpladser = "V\xc3\xa6lg Tank"\n\n             ElseIf Range("L3") = Sheets("Formatering").Range("F28") Then\n                 Range("E11") = Sheets("Formatering").Range("L3")\n                 Range("G11") = Sheets("Formatering").Range("L4")\n                 Range("I11") = Sheets("Formatering").Range("L5")\n                 Range("K11") = Sheets("Formatering").Range("L6")\n            ElseIf Range("L3") = "" Then\n                 Range("E11:E12,G11:G12,I11:I12,K11:K12").ClearContents\n            End If\n        End If\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是 Range("L3") 是一个合并单元格,实际上是 Range("L3:N4")。这会在删除单元格内容后检查单元格是否为空白时出现问题。

\n\n

我现在正在寻找一种方法来完成这项工作:

\n\n
ElseIf Range("L3").MergeArea.Cells(1,1).Value = "" Then\n    Range("E11:E12,G11:G12,I11:I12,K11:K12") = ""\nEnd If\n
Run Code Online (Sandbox Code Playgroud)\n

Sub*_*eer 5

你可以尝试这样的事情......

\n\n
Sub Worksheet_Change(ByVal Target As Range)\nIf Not Intersect(Target, Range("L3").MergeArea) Is Nothing Then\n    Application.EnableEvents = False\n    If Range("L3") = Sheets("Formatering").Range("F27") Then\n        Tankpladser = "V\xc3\xa6lg Tank"\n\n    ElseIf Range("L3") = Sheets("Formatering").Range("F28") Then\n        Range("E11") = Sheets("Formatering").Range("L3")\n        Range("G11") = Sheets("Formatering").Range("L4")\n        Range("I11") = Sheets("Formatering").Range("L5")\n        Range("K11") = Sheets("Formatering").Range("L6")\n    ElseIf Range("L3") = "" Then\n        Range("E11:E12,G11:G12,I11:I12,K11:K12").ClearContents\n    End If\n    Application.EnableEvents = True\nEnd If\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n