- 05 Mai 2018 às 16:07
#32782
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 vai para a aba Cálculos, copia o conteúdo da célula F10 a cola na na célula AD26 da aba Saldos. Meu código VBA não funciona. Alguém, por favor, poderia dar uma olhada em meu código VBA?
SE FOSSE uma fórmula ficaria assim... (talvez ajude):
=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: Pensei e usar 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 pela ajuda.
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 vai para a aba Cálculos, copia o conteúdo da célula F10 a cola na na célula AD26 da aba Saldos. Meu código VBA não funciona. Alguém, por favor, poderia dar uma olhada em meu código VBA?
SE FOSSE uma fórmula ficaria assim... (talvez ajude):
=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: Pensei e usar 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 pela ajuda.