Página 1 de 1
Atribuir um Status com base no valor de duas datas em uma listview
Enviado: Sex Jul 12, 2019 2:49 pm
por Diego Shimizu
Olá pessoal.
Sou novo por aqui e muito leigo no assunto. Tudo que consegui até agora foi assistindo vídeos no Youtube e lendo matérias em fóruns. Não encontrei nada específico, então, resolvi escrever.
Tenho uma planilha de cadastro que possui duas colunas: Data de início de vigência e data de final de vigência. A diferença entre elas é de 3 anos.
Por meio de formatação condicional, consigo que o Excel me dê o status da vigência: Se até a data atual o documento estiver vigente, o Excel me retorna com "VIGENTE"; Se, com base na data atual, o documento estiver vencido, o Excel me retorna com "VENCIDO".
Essas informações são carregadas para uma listview. Acontece que a planilha possui muitos registros e está se tornando pesada para carregar.
Existiria alguma maneira, através de VBA, de realizar essa análise de diferença entra as duas datas e o retorno com o STATUS sem utilizar fórmulas na planilha?
Se ficar difícil de entender, me avisem que dou mais informações.
Obrigado desde já pela ajuda!
Re: Atribuir um Status com base no valor de duas datas em uma listview
Enviado: Sex Jul 12, 2019 3:50 pm
por Reinaldo
Possível, em principio é, porem e preciso conhecer sua estrutura e distribuição de dados; modelo representativo de sua planilha, dados fictícios se necessário, com algo em torno de uns 50 registros para teste;
bem como descrever/mostrar como é hoje (formulas/condicional/etc..), e o que espera ter/quando.
Somente a condicional, que eu saiba não e motivo para a lentidão/demora informada
Re: Atribuir um Status com base no valor de duas datas em uma listview
Enviado: Sex Jul 12, 2019 4:18 pm
por Diego Shimizu
Obrigado pelo retorno.
A formatação condicional em si, de fato, não é o problema.
O problemas, creio, está nas fórmulas e funções usadas.
Com o aumento dos registros, a planilha vai se tornando lenta.
Assim, sendo esse o problema ou não, a ideia é partir logo pro VBA.
A listview tem 3 colunas: Data inicial | Data final | Status
A data inicial e a final são carregadas da planilha.
O que quero é uma fórmula que preencha, na própria listview, o status de acordo com o valor de Data Final em relação a data de Hoje.
Se a data final for igual ou anterior a hoje, o status seria "VIGENTE"
Se a data final for superior a hoje, o status seria "RENOVAR"
O código seria executado toda vez que a listview fosse exibida.
Conseguiu entender?
EDIT
Estou anexando a planilha para análise. Ela está sem as fórmulas, funções. Creio que seja suficiente para ajudar a entender o que pretendo.
https://drive.google.com/file/d/1yt85to ... sp=sharing
Re: Atribuir um Status com base no valor de duas datas em uma listview
Enviado: Sex Jul 12, 2019 6:18 pm
por Reinaldo
Entender ja havia entendido, precisava saber quando/onde.
voçe menciona ".. listview tem 3 colunas: Data inicial | Data final | Status..."
Bem a unica listview (que localizei)do modelo (frm.Pesquisa) enviado tem muito mais colunas e não tem data inicial.
"..Nome, DC50, Vencimento, Status, Email, Telefone, Funções, Documentos, Observações..."
Supondo que seja essa; e pela forma de "preenchimento", uma maneira seria:
Alterar a linha:
Para:
Código: Selecionar todos
If CDate(Vencimento) >= Date Then
Status = "Vigente"
Else
Status = "Renovar"
End If
Re: Atribuir um Status com base no valor de duas datas em uma listview
Enviado: Sex Jul 12, 2019 6:58 pm
por Diego Shimizu
Reginaldo, muito obrigado pela ajuda.
De fato, eu estava trabalhando em uma tabela "teste" para, por fim, implementar na tabela fina (a que compartilhei). Por isso, a descrição que fiz ficou diferente daquilo que efetivamente encontrou na tabela compartilhada.
Parece que o código funcionou perfeitamente.
A dúvida é: A medida que o tempo passar, o status da será atualizado?
Por exemplo: Hoje, realizei um registro cuja data de vencimento é 13/07/2019. Logo, o status é "VIGENTE".
No dia 14/07/2019, quando acessar a listview, este registro já estará vencido e, portanto, seu status deverá ser "RENOVAR".
O código que apresentou fará essa leitura?
Obrigado.
Re: Atribuir um Status com base no valor de duas datas em uma listview
Enviado: Sáb Jul 13, 2019 5:45 am
por Reinaldo
A coluna status é calculada, a cada abertura/carregamento do formulário/listview, portanto deverá apresentar essa "revisão"
Re: Atribuir um Status com base no valor de duas datas em uma listview
Enviado: Seg Jul 15, 2019 9:18 am
por Diego Shimizu
Muito obrigado Reginaldo!
Ficou perfeito.
Re: Atribuir um Status com base no valor de duas datas em uma listview
Enviado: Seg Jul 15, 2019 4:22 pm
por Diego Shimizu
Aproveitando o post, fiz mais algumas implementações na planilha.
A dúvida agora é com respeito a impressão: Quando seleciono o item que desejo imprimir e clico no botão "Imprimir", a tela com as opções de impressão é exibida no fundo do userform, deixando o arquivo "congelado". Alguém poderia me ajudar com situação?
Segue link do arquivo:
https://drive.google.com/file/d/1MEU5sv ... sp=sharing
Re: Atribuir um Status com base no valor de duas datas em uma listview
Enviado: Seg Jul 15, 2019 8:50 pm
por Reinaldo
Bem sua duvida atual não tem nada haver como o titulo do post; assim creio que o ideal seria abertura de um novo post; mas...
Porque precisa do printPreview?
Porque não utiliza somente o print?
Re: Atribuir um Status com base no valor de duas datas em uma listview
Enviado: Seg Jul 15, 2019 9:10 pm
por Diego Shimizu
Obrigado Reginaldo.
Abri um novo tópico:
https://www.tomasvasquez.com.br/forum/v ... =20&t=7160
Agradeço se puder me ajudar.
A ideia de usar o printview é poder pré visualizar o arquivo antes da impressão. O mesmo pode ser feito com o print? (Se desejar, pode responder no novo tópico...)