Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, estou com um problemão em relação a uma macro que estou fazendo no VBA.
Estou automatizando uma rotina de relatórios aqui na empresa. A parte de formatação do relatório está perfeita, ficou até melhor do que esperava, mas o batimento deste relatório é que está me dando dor de cabeça...
Vou mostrar um exemplo de como o relatório fica e como ele deve ser trabalhado:
O relatório fica assim:
NEO MXM
COLUNA.A COLUNA.B COLUNA. C COLUNA.D COLUNA E COLUNA F COLUNA G
EMPRESA 1 FATURA VALOR DIFERENÇA VALOR FATURA EMPRESA
EMPRESA(A) 100/08 100,00 0,00 100,00 100/08 EMPRESA(A)
EMPRESA(B) 196/08 194,56 -94,56 100,00 148/08 EMPRESA©
EMPRESA© 148/08 100,00 100,00
Isto é somente um exemplo da tabela, pois a quantidade de registros é brutal. Na verdade eu gero o mesmo relatório em 2 programas diferentes pois um (NEO) contém os dados das faturas que estão sendo trabalhadas pelos analistas e o outro (MXM), contém os dados de pagamento das faturas e em que mês foram pagas.
No caso, a macro deveria comparar o valor e a fatura do NEO com o valor e a fatura do MXM, sendo encontrado alguma divergência entre os dois, ele tem que selecionar a parte da tabela que está com o maior valor e jogar uma linha para baixo, empurrando todos os outros registros abaixo 1 célula a mais.
Esta parte de identificar qual é o maior e descer uma única linha está funcionando bem, mas o problema é quando ele tem que fazer uma nova comparação com a segunda linha...
Sendo assim, sempre que a fatura se igualar entre as colunas ele deve partir para a próxima linha e verificar, veja como ficaria
EMPRESA(A) 100/08 100,00 0,00 100,00 100/08 EMPRESA(A)
EMPRESA(B) 196/08 194,56 -194,56
EMPRESA© 148/08 100,00 0,00 100,00 148/08 EMPRESA©
O código acabei tendo que fazer propositalmente pra ficar omente com uma linha de trabalho pois não conseguí fazer o que estou querendo, vejam o código:
>
Sub TESTE_BATIMENTO()
Dim CEL1 As Integer
Dim CEL2 As Integer
Dim CONT As Integer
CEL1 = Range("F3")
CEL2 = Range("H3")
CONT = 3
Do While Cells(CONT, 6) <> ""
CONT = CONT + 1
CEL1 = CEL1 + 1
CEL2 = CEL2 + 1
Loop
If CEL1 > CEL2 Then
If CEL1 <> CEL2 Then
Range("A3:F3").Select
Selection.Insert Shift:=xlDown
Else
Range("G3") = CEL2 - CEL1
End If
ElseIf CEL1 < CEL2 Then
If CEL2 <> CEL1 Then
Range("H3:L3").Select
Selection.Insert Shift:=xlDown
Else
Range("G3") = CEL2 - CEL1
End If
End If
End Sub
Por favor, alguém sabe como resolvo isso? Espero não ter viajado demais na explicação http://forum.imasters.com.br/public/style_emoticons/default/grin.gif
Carregando comentários...