2014-04-03 45 views
0

我在特定單元格上使用Worksheet_Change來清除內容。被評估的單元格是「A10」。該值來自數據驗證列表。我注意到,當這個單元格中存在一個值時,即使我從該列表中重新選擇相同的值,單擊下拉列表時,清除的內容仍會執行。有沒有辦法避免這種情況?我擔心這張表的用戶會想要查看下拉菜單中的選項,但最終會保留原來的A10值,但仍然會丟失其他單元格的內容。Worksheet_Change on Data Validation Value

下面是代碼:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim rang As Range 
    Set rang = Worksheets("Sheet1").Range("A10") 
    If Not Intersect(Target, rang) Is Nothing Then 
    Worksheets("Sheet1").Range("B10:B50000", "C10:C50000").ClearContents 
    End If 
End Sub 

提前感謝!

回答

0

這裏是一個版本的宏,用於跟蹤舊值的A10

如果沒有真正更改時,它就消失了:

Dim OldValue As Variant 
Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim rang As Range 
    Set rang = Worksheets("Sheet1").Range("A10") 
    If IsEmpty(OldValue) Then 
     OldValue = rang.Value 
     Exit Sub 
    End If 

    If Not Intersect(Target, rang) Is Nothing Then 
     If OldValue = rang.Value Then 
      Exit Sub 
     End If 
     OldValue = rang.Value 
     Application.EnableEvents = False 
      Worksheets("Sheet1").Range("B10:B50000", "C10:C50000").ClearContents 
     Application.EnableEvents = True 
    End If 
End Sub 

因爲的OldValue是DIM'ed 以上的子,它的值保留了來電呼叫。

相關問題