Olá Sandro,
SandroLima escreveu:Muito obrigado pela prestatividade.
Por nada!!
SandroLima escreveu:Estou testando a macro e pelo que pude perceber a macro melhorou ainda mais a performance para a Plan "FLUXO FINANCEIRO".
Não me lembro de ter feito algo que alterasse a performance, mas.... que bom!!
SandroLima escreveu:Mas para a Plan "LIVRO-CAIXA" não funcionou adequadamente.
Qual problema apresentou?
SandroLima escreveu:De qualquer maneira baseado no seu código vou tentar dividir as rotinas da Macro em 2 módulos mesmo... um para cada Planilha... pois pretendo fazer a mesma rotina com outras condições posteriormente.
Podemos fazer assim num primeiro momento, mas eu acredito que pra você é mais fácil raciocinar com as macros separadas, porque tem pouca experiência em VBA. Quando tiver mais familiaridade com programação, vai ver mais simplicidade em todas juntas, e verá que por terem todas a mesma estrutura básica, juntas é mais indicado. Vou ver se consigo te mandar um áudio explicando a rotina que te mandei (junta) de uma forma um pouco mais estrutural.
SandroLima escreveu:Por exemplo, além do critério "Livro-caixa", depois quero fazer uma rotina para extrair somente os atendimentos baseado no critério "Paciente", e com esse código modificando apenas o critério eu poderia fazer muitas outras rotinas conforme necessidade.
Isso mostra que tenho razão quando digo que a estrutura básica é a mesma, e as mudanças entre as rotinas é pequena, e fácil de administrar a junção.
SandroLima escreveu:Vou tentar separar as duas rotinas e dou retorno. Já lhe envio com a tentativa para vc conferir e ajustar o que estiver errado.
Ok, vou ver se consigo olhar hoje, porque no início da semana vai ser corrido...
SandroLima escreveu:Agora me diga uma coisa. Pq alterou linhas como:
Código: Selecionar todosDebug.Print Right(" " & Format(Timer() - Tempo, "0"), 4) & " Iniciação ok"
Foi devido isso a melhora de performance da macro ou foi para juntar as duas rotinas em um a única macro?
Na parte de edição do VBA existe um botão no menu de edição que é uma planilhazinha e um sinal de exclamação vermelho em cima, que abre a janela de "Verificação Imediata". POde abrir essa janela também teclando CTRL-G.
A macro consegue imprimir linhas nessa janela para que, por exemplo, você possa acompanhar a execução.
Quem imprime nessa janela é o comando Debug.Print. Eu dividi a macro em atapas, e no final de cada etapa eu imprimo nessa tela. Experimente abrir o editor, abrir essa janela (CTRL-G), abrir o módulo da macro, clicar na segunda linha (Sub Vai1(), que executa a macro como FF), coloque pra rodar (botão de play na barra de edição), e observe as etapas sendo impressas na janela de Verificação Imediata.
Antes eu apenas imprimia uma linha cada vez que acabava uma etapa. Daí modifiquei o comando pra imprimir também quantos segundos (inteiros, sem decimais) decorreram desde o início da macro até o encerramento de cada etapa. isso pra ter uma ideia de quanto tempo demora cada etapa.
Essas linhas poderiam ser apagadas quanto a macro estiver redonda, mas pra ser sincero eu nem apagaria porque não gasta nada de processamento e nem de memória, e se um dia você notar algo de estranho na execução da macro, basta abrir a janela e ver se todas as etapas foram concluídas, se nenhuma apresentou tempo de execução ínfimo ou exagerado, o que poderia dar uma pista de onde está o erro.
Agora sendo direto, sem enrolação: não, a alteração na linha Debug.Print não tem nada a ver com a melhora na performance, e nem com a junção das rotinas.
Jimmy
Nas mensagens que te ajudaram de alguma forma, dê seu LIKE: clique no "positivo" (ícone OBRIGADO).
Se o problema está encerrado, por favor, clique em MARCAR RESOLVIDO.