Ir ao conteúdo

Posts recomendados

Postado

Prezados, muito bom dia!

 

Sou iniciante no VBA e gostaria de tirar uma dúvida básica.

 

Estou tentando chamar uma função de acordo com o valor de uma célula, utilizando o código abaixo. Ocorre que esse código só funciona se o valor da célula for digitado pelo usuário; no meu caso, em que o valor da célula é vinculado ao resultado de outra, o código não é sensibilizado. Alguém poderia propor um ajuste?

 

Agradeço a atenção!

 

Abraços!

 

Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        
        If Not Intersect(Target, Range("AB6")) Is Nothing Then
           
        Select Case Target
             Case 101
               Call Fortescue
             Case 102
               Call Arrium             
             Case Else
           End Select
 
        End If
        Application.EnableEvents = True
End Sub

 

 


Ops, generalizando:
 
      Select Case Target
             Case 1
               Call Macro_1
             Case 2
               Call Macro_2             
             Case Else
           End Select
  • Solução
Postado

Experimente:

Private Sub Worksheet_Calculate() Select Case [AB6]  Case 101   Fortescue  Case 102   Arrium End SelectEnd Sub
Postado

Muito obrigado!!


Osvaldo, a macro solicitada refere-se à edição de link com outra planilha Excel:

 

-----------------------
Sub Fortescue()
 
    ChDir "C:\Users\Lucas\Documents\Garbage"
 
    ActiveWorkbook.ChangeLink Name:= _
        "C:\Users\Lucas\Documents\Arrium\Financials.xlsx", NewName:= _
        "C:\Users\Lucas\Documents\Garbage\Fortescue.xlsm", Type:=xlExcelLinks
 
End Sub
-----------------------
 
A macro estava funcionando bem, inclusive associada à rotina "Case then Call" que você sugeriu. Contudo, após fechar e abrir a planilha, a macro deixou de funcionar. O erro está na parte em negrito, conforme destacado acima.
 
Mensagem de erro:
 
     Erro em tempo de execução: '1004':
     O método 'ChangeLink' do objeto '_Workbook' falhou.
 
ALguma sugestão para o motivo da falha repentina?
 
Obrigado mais uma vez.
Postado

Fala, Lucas.

Eu não tenho ideia da causa da falha. Aparentemente o seu código está correto.

Alguns palpites pra tentar ajudar:

 

1. realmente existe um "Link" no arquivo ativo ?

2. grave uma macro enquanto altera um "Link" e veja o código gravado

3. o comando abaixo copiei da ajuda do editor de VBA (coloque o cursor sobre o comando "ChangeLink " e aperte a tecla F1. Altere os caminhos de acordo e faça um teste).

Sub Fortescue()ActiveWorkbook.ChangeLink "c:\excel\book1.xls", _    "c:\excel\book2.xls", xlExcelLinksEnd Sub
Visitante
Este tópico está impedido de receber novas respostas.

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!