我编写了一段代码,当单元格 L3 更改时,它会根据 L3 的内容依次更改一系列单元格。
\n\nL3 是一个从 L3 到 N4 的合并单元格,尽管如此,代码仍然可以正常工作,直到用户删除内容而不是输入新内容。
\n\n以下代码对于未合并的单元格工作得非常好:
\n\nSub 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\nRun Code Online (Sandbox Code Playgroud)\n\n问题是 Range("L3") 是一个合并单元格,实际上是 Range("L3:N4")。这会在删除单元格内容后检查单元格是否为空白时出现问题。
\n\n我现在正在寻找一种方法来完成这项工作:
\n\nElseIf Range("L3").MergeArea.Cells(1,1).Value = "" Then\n Range("E11:E12,G11:G12,I11:I12,K11:K12") = ""\nEnd If\nRun Code Online (Sandbox Code Playgroud)\n
你可以尝试这样的事情......
\n\nSub 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\nRun Code Online (Sandbox Code Playgroud)\n