- 02 Abr 2023 às 16:45
#73133
Boa tarde, Osvaldomp.
Mais uma vez obrigado pelo retorno e explicações dadas.
Vou anexar uma planilha e nela coloco duas situações:
- Em uma aba inseri manualmente o resultado esperado ao final da rotina da macro.
- Na Aba Principal "NOTAS DE CORRETAGEM" inseri 2 botões com Macros.
> em um deles fiz a simulação da maneira que consegui inserir os dados porém só consegui escrever para a situação em que há uma única nota de corretagem e envolve o "loop" que talvez não seja a melhor maneira de inserir os dados mas foi a que eu consegui estruturar
> No outro botão, agora já para a situação em que pode ocorrer mais de uma nota de corretagem, já utilizando a sua maneira de contar as ocorrências e baseado nas suas orientações deixei comentado o que preciso no código.
Poderia me ajudar a construir a melhor maneira de extrair esses dados?
Vou tentar me explicar minhas limitações a necessidade do código baseado nas suas orientações comentadas anteriormente.
► No seu código a identificação das linhas é informada via MsgBox, que é uma informação volátil e isso obriga o usuário a memorizar cada número de linha mostrado na tela.
Se a informação de quais linhas contém o critério será utilizada na sequência pela mesma ou por outra macro ou UDF, então ela deve ser armazenada em uma coleção (Matriz, por exemplo).
Por outro lado, se essa informação será somente para análise visual após a execução da macro, então o próprio código pode destacar as linhas na planilha.
Não faz sentido obrigar o usuário a memorizar dados exibidos na tela durante a execução de uma macro.
►► Sim a informação da linha deverá ser armazenada... coloquei o MsgBox apenas para saber se está funcionado a localização / identificação das linhas inicial e final da sequencia de operações de cada nota de corretagem... e isso não estou sabendo como fazer.
Tudo que quero ao final da macro é localizar as linhas das operações e copiá-las para outra coluna em sequencia.
--------------------------------------------------------------------------------------------------------------------------------------------------------------
►O método a ser utilizado para identificar a localização de conteúdos (neste caso você escolheu o Loop) deve ser escolhido com base na quantidade de dados a serem analisados e não na quantidade existente dos conteúdos procurados, até porque, a quantidade de conteúdos procurados não é sabida antes de rodar a macro, pois se já for sabida, então rodar a macro para descobrir o que já se sabe é puro passatempo.
►►O intuito/resultado desejado com a macro é localizar as linhas das operações e copiá-las para outra coluna em sequencia.
Vou reproduzir o efeito desejado manualmente na planilha.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
► O exemplo de código que passei na mensagem anterior faz isso. O Loop é possivelmente o mais lento dos métodos para se efetuar buscas em planilha.
►► Achei ótimo e já inseri aqui.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
► Para identificar a última linha em que ocorre o conteúdo procurado eu sugiro o uso do método Find com o parâmetro SearchDirection:=xlPrevious. NUNCA UTILIZE LOOP PARA ISSO.
►► Esse não conheço... poderia me dar uma orientação?
------------------------------------------------------------------------------------------------------------------------------------------------------------------
► A minha sugestão é utilizar o método Find ... FindNext para identificar todas as células/linhas que contém o conteúdo procurado. Mas isso depende do próximo passo, ou seja, o que você vai fazer com essas informações.
►► Vou colocar na planilha a parte do código com a sua ideia anterior para contar as ocorrências e o exemplo inserido manualmente do resultado desejado
► Outra dica é evitar a criação desnecessária de variáveis, pois isso aumenta o tamanho do código, dificulta a sua leitura e o seu entendimento.
►► Sobre as vaiáveis é pq vou executando o código linha a linha para ir entendendo e as variáveis me ajudam nisso. Mas concordo que códigos devem ser mais enxutos.
------------------------------------------------------------------------------------------------------------------------------------------------------------------
►Veja no código que passei que utilizei somente uma variável (k). E coloquei essa variável supondo que ele será utilizada na sequência, pois se for só para informação visual, então ela pode ser dispensada.
►► Preciso armazenar a informação.
Segue a planilha anexa.
Você não está autorizado a ver ou baixar esse anexo.