Ir ao conteúdo
  • Cadastre-se
Alexandre José Costa

Excel VBA copia e cola mediante condições dinâmicas

Recommended Posts

Prezados, 

 

Boa tarde.

No código VBA abaixo eu tento validar duas condições na aba Saldos (que acontecerão na coluna D e G). Estas condições são lançadas manualmente linha a linha.

Quando as duas condições ocorrerem juntas, então a planilha copia o conteúdo da célula F10 na aba Cálculos e a cola na na célula AD26 da aba Saldos. Meu código VBA não funciona. Poderiam, por favor, analisar meu código VBA?

 

SE FOSSE uma fórmula ficaria assim:

 

=SE(E(G25="Ativa";D25="MBT");Cálculos!F6;

SE(E(G25="Ativa";D25="Falou(A)");Cálculos!J6;

SE(E(G25="Ativa";D25="Falou(B)");Cálculos!N6;

SE(E(G25="Ativa";D25="BTD");Cálculos!N6;

SE(E(G25="Ativa";D25="BRZ");Cálculos!R6;

SE(E(G25="Ativa";D25="FBT");Cálculos!V6;

SE(E(G25="Ativa";D25="ARN");Cálculos!Z6;

SE(E(G25="Ativa";D25="B2U");Cálculos!AH6;

SE(E(G25="Ativa";D25="NEG");Cálculos!AL6;

SE(E(G25="Ativa";D25="FOX");Cálculos!AP6;

SE(E(G25="Ativa";D25="WAL");Cálculos!AT6;

SE(E(G25="Ativa";D25="TEM");Cálculos!AX6;

SE(E(G25="Ativa";D25="MBT Dentro");Cálculos!BB6;

))))))))))))))

 

Acontece que a aba Saldos é uma aba de lançamentos, isto é, o VBA tem que reconhecer os lançamentos manuais, linha a linha, nas colunas D e G da aba Saldos.

NOTA: Seria interessando que usássemos o Seletc Case porque serão muitas condições para validar.

 

**************************************** esta é minha tentativa de código ****************************************

Private Sub Worksheet_OrdemAtiva(ByVal Target As Range)

 

    'Determina a coluna G como a linha ativa da planilha
        If Target.Column = 7 Then
        Application.EnableEvents = False
        
        'Variável da linha ativa
        OrdemAtiva = Target.Row
       
        'Identifica a Exchange lançada na coluna D e identifica se a ordem na coluna G é Ativa
        Select Case Range("D").Value = "D25" And Range("G" & OrdemAtiva).Value = "Ativa"
            
            'Busca na aba Cálculos, da Exchange lançada, o resultado do cálculo feito para uma Ordem Ativa
            Case Is = Sheets("Cálculos").Cells(10, 6).Value
            
            'Inputa o resultado (acima) do cálculo feito na aba Cálculos, da Exchange lançada para uma Ordem Ativa
            Range("AD" & OrdemAtiva).Value = Sheets("Cálculos").Cells(10, 6).Value
            
            'Elimina a fórmula e deixa o seu resultado na célula
            Range("AD" & OrdemAtiva).Value = Range("AD" & OrdemAtiva).Value
           
        End Select
        
        Application.EnableEvents = True
    End If
**********************************************************************************************************************

Desde já fico muito agradecido.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×