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

时间:2017-05-04 16:24:11

标签: excel vba excel-vba

我制作了一段代码,当单元格L3发生变化时,它会依次改变一系列单元格,具体取决于L3的内容。

L3是一个合并的单元格,从L3到N4,代码工作正常,直到用户删除内容而不是输入新内容为止。

以下代码适用于未合并的单元格:

Sub Worksheet_Change(ByVal Target As Range)

        If Target.Address = Range("L3").Address Then

             If Range("L3") = Sheets("Formatering").Range("F27") Then
                 Tankpladser = "Vælg Tank"

             ElseIf Range("L3") = Sheets("Formatering").Range("F28") Then
                 Range("E11") = Sheets("Formatering").Range("L3")
                 Range("G11") = Sheets("Formatering").Range("L4")
                 Range("I11") = Sheets("Formatering").Range("L5")
                 Range("K11") = Sheets("Formatering").Range("L6")
            ElseIf Range("L3") = "" Then
                 Range("E11:E12,G11:G12,I11:I12,K11:K12").ClearContents
            End If
        End If
End Sub

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

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

ElseIf Range("L3").MergeArea.Cells(1,1).Value = "" Then
    Range("E11:E12,G11:G12,I11:I12,K11:K12") = ""
End If

1 个答案:

答案 0 :(得分:4)

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

Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("L3").MergeArea) Is Nothing Then
    Application.EnableEvents = False
    If Range("L3") = Sheets("Formatering").Range("F27") Then
        Tankpladser = "Vælg Tank"

    ElseIf Range("L3") = Sheets("Formatering").Range("F28") Then
        Range("E11") = Sheets("Formatering").Range("L3")
        Range("G11") = Sheets("Formatering").Range("L4")
        Range("I11") = Sheets("Formatering").Range("L5")
        Range("K11") = Sheets("Formatering").Range("L6")
    ElseIf Range("L3") = "" Then
        Range("E11:E12,G11:G12,I11:I12,K11:K12").ClearContents
    End If
    Application.EnableEvents = True
End If
End Sub