Vba: como executar uma macro quando o valor de uma célula muda


Você pode usar a seguinte sintaxe no VBA para executar uma macro quando um valor de célula específico for alterado:

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

Este exemplo específico fará com que a macro chamada MultiplyMacro seja executada quando o valor da célula A1 for alterado.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: execute uma macro quando o valor de uma célula for alterado usando VBA

Suponha que criemos a seguinte macro chamada MultiplyMacro que multiplica os valores nas células A1 e B1 e exibe os resultados na célula C1 :

 SubMultiplyMacro ()
    Range(" C1 ") = Range(" A1 ") * Range(" B1 ")
End Sub

Por exemplo, suponha que temos o valor 12 na célula A1 e o valor 3 na célula B1 .

Se executarmos esta macro, receberemos o seguinte resultado:

Agora suponha que queiramos executar esta macro automaticamente sempre que o valor da célula A1 for alterado.

Para fazer isso, podemos clicar com o botão direito no nome da planilha e clicar em Mostrar código :

Na janela de edição de código que aparece, você pode colar o seguinte código:

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

A captura de tela a seguir mostra como fazer isso na prática:

Podemos então fechar o editor VB.

Agora, sempre que alterarmos o valor na célula A1 , a macro chamada MultiplyMacro será executada automaticamente e realizará a multiplicação usando o novo valor na célula A1 .

Por exemplo, suponha que alteremos o valor da célula A1 para 10 . Assim que alterarmos o valor e pressionarmos Enter , a macro será executada:

A macro multiplica 10 por 3 e exibe o resultado na célula C2 .

Nota : Se desejar executar a macro quando uma célula em um intervalo específico for alterada, você pode usar a seguinte sintaxe:

 Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range(" A1:B1 ")) Is Nothing Then
        Call MultiplyMacro
    End If
End Sub

Isso fará com que a macro chamada MultiplyMacro seja executada se alguma célula no intervalo A1:B1 for alterada.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:

VBA: Como contar o número de planilhas em uma pasta de trabalho
VBA: Como extrair dados de outra pasta de trabalho
VBA: Como adicionar novas planilhas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *