2016-10-06 64 views
0

我正在設置Worksheet_Change宏,以便如果單元格K4的內容不等於「基於事件」,則J5:K7的內容將被清除。這很好。下面的代碼。Excel VBA WorkSheet_Change清除內容如果空白

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim MRange As Range 

    Set MRange = Range("K4") 
    If MRange <> "Event Based" Then 
     If Union(Target, MRange).Address = MRange.Address Then 
      Application.EnableEvents = False 
      Range("J5:K7").Select 
      Selection.ClearContents 
      Application.EnableEvents = True 
     End If 
    End If 

End Sub 

但我想一個Worksheet_Change事件,如果單元格J12的內容清零。但下面的宏不起作用。我知道這是與細胞價值是空的,但我會很感激任何幫助。

Dim NRange As Range 

    Set NRange = Range("J12") 
    If NRange = "" Then 
     If Union(Target, NRange).Address = NRange.Address Then 
      Application.EnableEvents = False 
      Range("J5:K7").Select 
      Selection.ClearContents 
      Application.EnableEvents = True 

     End If 
    End If 

End Sub 
+0

看到我的回答如下,讓我知道如果這就是你的意思是 –

回答

1

下面的代碼檢查如果細胞J12值發生了變化,如果單元格的值是「」,則它清除範圍的內容「J5:K7」。

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim IntersectRange    As Range 
    Dim NRange      As Range 

    Set NRange = Range("J12") 
    Set IntersectRange = Intersect(Target, NRange) 

    ' continue running this code only if Cell J12 has changed 
    If Not IntersectRange Is Nothing Then 

     If Target.Value = "" Then 
      Application.EnableEvents = False 
      Range("J5:K7").ClearContents 
      Application.EnableEvents = True 
     End If 

    End If 

End Sub 
+0

夏嘉曦 - 我知道這是類似的東西。這幾乎奏效。當我運行時,我在Target.Value =「」處得到一個錯誤。我改爲NRange.Value =「」,它的工作完美。如果沒有你的幫助,我不可能得到那裏。 –