Я хочу очистить результат выбора комбинированного списка на листе 1 (А1), изменив значение F4 на листе 2 (это изменение другим комбинированным списком на листе 1). Я использую следующий код на листе 1:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("sheet2!F4")) Is Nothing Then

Range("A1").ClearContents

End If

End Sub

ПРОБЛЕМА ЕСТЬ, если измененная ячейка (F4) пуста, ввод или изменение любого значения будет работать (очистите A1 на листе 1), но если изменение произойдет из другой ячейки (например, если в F4 вы вводите = D4) целевой ячейки ( А1) не будет очищаться при изменении значений. Пожалуйста помоги...

2 ответа2

2

Это то, что вы ищете?

Вставьте приведенный ниже код в Sheet2, потому что именно здесь происходят изменения.

Private Sub Worksheet_Calculate()
    'On Cell Calculate
    Dim target1 As Range
    Set target1 = Range("F4")

    If Not Intersect(target1, target1) Is Nothing Then
        Call ClearBox
    End If

End Sub

Private Sub Worksheet_Change(ByVal target As Range)
    'On Cell Change
    If target.Address = "$F$4" Then
        Call ClearBox
    End If

End Sub

Private Sub ClearBox()
    'Clear Combo box
    Sheets("Sheet1").Range("A1").ClearContents
End Sub
0

Это по замыслу. Событие изменения срабатывает только при редактировании ячейки, а не при пересчете формулы и изменении значения ячейки. Если у вас есть формула в F4, то вам нужно будет отслеживать ячейки, которые вносят вклад в эту формулу. В этом случае, если F4 содержит формулу =D4 , вам нужно будет отслеживать D4 на наличие изменений в событии изменения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .