2014-04-03 6 views
0

Я использую Worksheet_Change для ClearContents на определенных ячейках. Ячейкой, которая оценивается для изменения, является «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 выше, его значение сохраняется от вызова к вызову.