Ir ao conteúdo
  • Cadastre-se

Excel Macro atingir meta assim que alterar valor células


Posts recomendados

Fala galera!

Estou com uma planilha que recebe alguns dados de entrada, e então utiliza o comando atingir meta = 0  para resolver uma equação iterativa.

No caso, preciso automatizar isso, para que, quando altere algum dos dados de entrada, o comando atingir meta seja automaticamente acionado, e a equação seja resolvida. 

No momento tenho que fazer isso manualmente, sempre quando altero um dos dados de entrada relacionados à essa equação.

Link para o comentário
Compartilhar em outros sites

@Patropi

 

Aqui está a macro que criei, mas não está funcionando sempre. Estou achando estranho, pois em alguns momentos o comando atingir meta é ativado, em outros não.

 

Private Sub Worksheet_Change(ByVal Target As Range)

Dim linha As Integer
Dim coluna As Integer

coluna = Target.Column
linha = Target.Row

If (linha = 25 And coluna = D) Then
Call atingirmeta
End If
If (linha = 26 And coluna = D) Then
Call atingirmeta
End If
If (linha = 27 And coluna = D) Then
Call atingirmeta
End If
If (linha = 28 And coluna = D) Then
Call atingirmeta
End If
If (linha = 29 And coluna = D) Then
Call atingirmeta
End If


End Sub

Sub atingirmeta()

Range("L46").GoalSeek Goal:=0, ChangingCell:=Range("K50")

End Sub
 

Link para o comentário
Compartilhar em outros sites

@Patropi

 

Consegui fazer o que precisava. Agradeço o auxílio. Estou postando aqui o que fiz, para ajudar outros que precisarem. Basicamente eu fiz com que, quando eu altere as células D25:D29, ele ative a macro automaticamente, fazendo um goal seek (atingir meta) para a célula L46=0, alterando célula K50. No meu caso, esse comando foi útil para automatizar a resolução de uma equação implícita, quando algumas variáveis(dados de entrada) são alterados.

 

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    
    Set KeyCells = Range("D25:D29")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

       
        
        Range("L46").GoalSeek Goal:=0, ChangingCell:=Range("K50")
        
        MsgBox "Comando goal seek, na célula L46=0, ativado."
       
    End If
End Sub

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...
  • mês depois...

@vicentelacerda Ficaria assim, usando como exemplo a célula "A1" para ativar a macro:

 

Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Target.Address(False, False) = "A1" Then
    
        Range("L46").GoalSeek Goal:=0, ChangingCell:=Range("K50")
        MsgBox "Comando goal seek, na célula L46=0, ativado."
       
    End If
    
End Sub

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...