limpe o conteúdo da célula quando o valor de outra célula em outra folha for alterado

0

Eu quero limpar o resultado de uma seleção de caixa de combinação na planilha1 (A1) alterando o valor de F4 na planilha2 (essa alteração por outra caixa de combinação na planilha 1). Eu uso o seguinte código na sheet1:

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

O PROBLEMA É, se a célula alterada (F4) estiver vazia, entrar ou alterar qualquer valor funcionará (limpar A1 na folha1), mas se a mudança se tornar de outra célula (por exemplo, se em F4 você digitar = D4) A célula de destino (A1) não será apagada alterando os valores. Por favor ajude ...

    
por Abtahei 22.05.2018 / 20:52

2 respostas

2

É isso que você está procurando?

Cole o código abaixo na Planilha2 porque é onde a mudança está ocorrendo.

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
    
por 23.05.2018 / 05:08
0

Isso é por design. O evento de alteração só é acionado quando uma célula é editada, não quando uma fórmula é recalculada e o valor da célula é alterado. Se você tiver uma fórmula em F4, precisará monitorar as células que contribuem para essa fórmula. Nesse caso, se F4 contiver a fórmula =D4 , você precisará monitorar D4 para alterações no evento de alteração.

    
por 22.05.2018 / 22:47