Macro para salvar dados em planilhas não funciona

Caros, Boa Tarde,

Recentemente, com a ajuda valorosa dos colaboradores @schiavinatto @FelipeAle @Grafeno, no tópico Preencher uma Dialog com dados de outra planilha a partir de um campo chave (tipo CPF) - #11 by clauhmonteiro ,e de alguns outros que não consigo lembrar agora (foram muitos meses costurando códigos e aprendendo), consegui finalizar uma planilha de cadastro de clientes, com alguns problemas pontuais, que descrevo:

A Plan1, que é a ideal (pq trava o campo ID e DATA), desde uma alteração feita na “Sub DialogOpen” (justamente a contagem de linhas para achar o próximo ID vago), parou de funcionar a “Sub InsertData”, que leva as informações da caixa de diálogo “dlgCadastro” para a planilha Beneficiários. Ao clicar no botão “Salvar”, a caixa de diálogo é limpa parcialmente, e ao tentar “Fechar”, todos os dados recém apagados voltam, e nada é gravado na planilha. A parte do código que não está funcional, está comentada.

A Plan2, que é a alternativa caso não resolva a Plan1, inicialmente informa o próximo ID disponível em uma msgbox, depois inicia a caixa de diálogo “dlgCadastro” SEM TRAVAR os campos ID e DATA, mas salva perfeitamente os dados imputados na caixa de diálogo, sem erros. E como disse, esta versão é alternativa. Ideal seria corrigir a Plan1, que está mais adequadamente próxima do objetivo final.

Ambas as planilhas tem um terceiro problema: A pesquisa (dlgPesquisa). Todos os botões, e controles funcionam, apesar de não conseguir a tão sonhada busca pelo CPF, e não pelo nome em lista. Porém, isso acontece de forma satisfatória se existem poucos dados. Qdo eu coloquei os 5000 mil inscritos na planilha, a busca ficou inviável, pois leva quase 5 minutos pra caixa de diálogo surgir, e outra eternidade para operacionalizar os dados. Sem contar que não acha todos os beneficiários cadastrados.

Ressalvo que NENHUMA parte dos códigos e macros eu fiz, o meu trabalho foi reunir vários trechos de códigos de terceiros, alguns já citados acima. E esta planilha pode, desde já, ficar à disposição para quem quiser utilizá-la para qual fim for. A ajuda de todos aqui foi provincial, e sei que é justamente este o objetivo deste espaço: dividir conhecimento.

Agradeço a todos, efusivamente.

Att,

Plan1.ods (133.8 KB)
Plan2.ods (134.4 KB)

1 Like

EO primeiro erro é que você não pode ter linhas de código fora da estrutura de um Sub-End Sub macro.

As linhas 99 a 120 ou são colocadas dentro de sua macro correta ou comentadas ou excluídas.

Caríssimo, Boa Tarde,

Desculpe, talvez não fui claro neste ponto específico, mas vou reforçar: as partes comentadas do código são os trechos que, DENTRO da estrutura Sub-End, estão dando erro. As partes não comentadas estão funcionais. Portanto, a Sub InsertData esta parcialmente funcional, e a Sub DialogClose não funciona, após as alterações que fiz no início, na Sub DialogOpen.

Comentei estas partes apenas para melhor entendimento de onde está o problema. E em anexo estão duas para comparativo de códigos e comportamento das macros.

A propósito, adaptei partes de códigos de respostas suas também, agora que me recordei. Portanto, tem também a sua valorosa contribuição, além das que eu já citei no início do tópico.

Att,

@clauhmonteiro , mexi um pouco na parte do cadastro só pra colocar pra rodar mesmo, mas depois vou ver se consigo dar uma melhorada no código. A parte de pesquisa não analisei ainda.

Segue para teste:
cadastro-01.ods (133.0 KB)

2 Likes

Sempre grato pela sua ajuda e a dos demais… Vou comparar as modificações com o meu, para verificar onde errei e aprender. A pesquisa, se puder ser feita pelo CPF, seria ideal, além da melhoria no tempo de resposta (SE for possível). A função de “Excluir” está vinculada a uma msgbox. Funciona, mas ficaria mais legal se, ao trazer o cadastro, simplesmente já fosse possível excluir ao usar o botão com essa função. Muito Obrigado.

Só para comentar: a nova funcionalidade de gravar o cadastro atual e manter a janela com o próximo ID livre, ficou excelente. Não havia me atentado para isto, estou tão absorto nesta tarefa de programação (que confesso ainda estar no jardim de infância), que nem cogitei essa situação. Muito obrigado pelos ensinamentos.

Deixo aqui um modelo padronizado (ainda em construção) em resposta ao seu outro tópico.

Aqui é possível efetuar a busca com tempo de resposta otimizado. Também é possível efetuar a busca por CPF como deseja. Tem botões para adicionar, editar, “excluir”, cancelar e salvar.

Projeto_ModeloCRUD.ods (73,3,KB)

Para reforçar, ainda está em construção.

1 Like

Caro, Bom dia. Sempre grato pela oportunidade de aprender com o conhecimento de vcs. Muito obrigado!!!

Seu arquivo com as alterações implantadas conforme troca no chat. Fica aqui para registro a ajuda aos demais usuários.
.
Ask_CadBeneficiarios.ods (156,2,KB)

Se o postado aqui lhe atender, por favor, marque como solução. Isso ajuda na busca e visualização rápida por outros usuários.

2 Likes