2017-05-04 57 views
3

我已經做了一段代碼,當單元格L3發生變化時,它依次改變了單元格的範圍,具體取決於L3的內容。通過刪除合併單元格的內容來觸發Worksheet_Change

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 

的問題是,範圍(「L3」)是一個合併單元,並且實際上是範圍(「L3:N4」)。這會在刪除單元格的內容後檢查單元格是否爲空時導致問題。

現在我正在尋找一種方法,使沿着這條工作線的東西:

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

嘗試'elseif的範圍(「L3 「)(1)=」「Then' –

+0

仍然沒有迴應。再說一次,如果我從下拉列表中選擇一個空格,它就可以正常工作。就好像簡單的刪除並不能真正清除L3中的所有單元格:N4 –

+0

我加載了一個包含數據驗證的合併單元格。從列表中選擇空白並刪除單元格激發了更改,並正確地觸發了if中的代碼。不知道你爲什麼不這樣做。 –

回答

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 
+0

驚人的,完美的作品。非常感謝你。 –

+0

不客氣Johansen!很高興它的工作。 – sktneer