Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#69310
Olá, boa tarde.

Na planilha que estou anexando, uma agenda, o primeiro rótulo de coluna corresponde ao dia do mês em que há alguma tarefa não concluída.
As tarefas são incluídas manualmente de maneira que indico dia, mês ou compromissos que todo mês aparecem (fix), e se foram concluídos ou não (a representa atual, não concluído) - colunas a, b e c. Quando concluído, basta inserir um x na célula em questão na coluna c que uma macro esconde a tarefa, de forma que só as pendentes continuem sendo exibidas.
Porém, todas as manhãs faço uma seleção manual para os compromissos da data atual, de maneira que sejam exibidas todas as tarefas do dia e as anteriores que ainda não foram concluídas.
Gostaria de saber se, ao inicializar a planilha, uma macro pode exibir todas as linhas cujas datas sejam as do dia e as anteriores (1ª coluna), quando as linhas, na coluna 3, coincidam com "a".
Na planilha em anexo estão algum registros, que permitirão checar o que acabei de demonstrar.
Você não está autorizado a ver ou baixar esse anexo.
#69313
JapSmart escreveu: 23 Fev 2022 às 13:53 ... exibir todas as linhas cujas datas sejam as do dia e as anteriores (1ª coluna),...
Se entendi corretamente o que você comentou aí acima, o primeiro critério para Filtrar, a ser aplicado na coluna A, ficaria assim ~~~> "data do registro <=data atual". É isso?

Porém, na coluna A não há datas. Você colocou números lá, que eu suponho representam os dias do mês e não datas, então o critério ficaria assim ~~~> "dia do registro <= data atual". E essa comparação "dia X data" não faz sentido.

Ainda, supondo que você queira filtrar ~~~> "dia do registro <= dia atual". Nesse caso, por exemplo, no dia 1 de cada mês, somente seriam filtrados os registros do dia 1, mesmo que haja registros não concluídos no mês anterior.

Como você quer fazer?
#69314
Correto, Osvaldo: na coluna A eu tenho o dia do mês.
A ideia é comparar, na inicialização da planilha, o inteiro que poderá se obtido da data atual (dia) com os registros da coluna A e exibir todos aqueles que forem iguais ou menores.
Veja que na minha planilha existem registros de 22, 23 e 24; hoje é 23.
Assim, quando a macro for implementada, aparecerão filtrados, na coluna A, os inteiros 22 e 23.
Um último detalhe: são mantidos visíveis na planilha todos os registros cuja coluna C for diferente de f (finalizado).
#69316
Veja se o código abaixo atende.

No módulo de EstaPasta_De_Trabalho.
Código: Selecionar todos
Private Sub Workbook_Open()
 With Sheets("AGENDA")
  On Error Resume Next
  .ShowAllData
  On Error GoTo 0
  .Range("A1:E1").AutoFilter 1, "<=" & Day(Date)
  .Range("A1:E1").AutoFilter 3, "<>f" 
 End With
End Sub
#
Bônus, em um módulo comum.
Código: Selecionar todos
Sub DesaplicaFiltro()
 On Error Resume Next
 Sheets("AGENDA").ShowAllData
End Sub
Editado pela última vez por osvaldomp em 23 Fev 2022 às 17:00, em um total de 1 vez.
#69333
Bom dia, Osvaldo.
Sim, deu certo. A planilha está abrindo com a filtragem das tarefas pendentes do dia 24 e anteriores.
A macro faz uma varredura na tabela em busca da data atual e das anteriores bem como das pendências (coluna C diferente de "f").
Nessa mencionada agenda existem tarefas cadastradas para além do dia 25. Quando eu quero visualizar tais tarefas, por exemplo, as do dia 25, preciso acessar o filtro da 1ª coluna - noto que as tarefas do dia e as anteriores não aparecem no filtro aberto e quando clico no dia 25 o Excel esconde as tarefas do dia 24 e anteriotes e mostra somente as do dia 25.
Acho que além de fazer a busca a macro poderia marcar o filtro, de forma que eu possa visualizar na planilha as tarefas do dia 25 e as asnteriores pendentes. É possível?
#69334
JapSmart escreveu: 24 Fev 2022 às 08:53 A macro faz uma varredura na tabela ...
A macro aplica Auto Filtro, não me parece que varredura seja um termo apropriado para a ação que a macro executa.

Quando eu quero visualizar tais tarefas, por exemplo, as do dia 25,
Se você rodou a macro e como resultado aparece ao menos um registro visível e você quer exibir um outro registro que não esteja visível, pois não atende aos critérios, então você precisa desaplicar o Auto Filtro, manualmente ou via o segundo código que passei.

... clico no dia 25 o Excel esconde as tarefas do dia 24 e anteriotes e mostra somente as do dia 25.
Claro, é assim que o Auto Filtro no Excel funciona. Se você tornou a aplicar o Auto Filtro manualmente com um novo critério, então os registros exibidos serão SOMENTE os que atenderem ao novo critério.
Eu elaborei um código com base no Auto Filtro atendendo ao título que você colocou no tópico "FILTAR". No entanto talvez essa não seja a solução adequada para o que você deseja. É necessário que você explique com exatidão e com clareza o que você quer fazer.


Acho que além de fazer a busca a macro poderia marcar o filtro, de forma que eu possa visualizar na planilha as tarefas do dia 25 e as asnteriores pendentes. É possível?
O que você quer dizer com "a macro poderia marcar o filtro" ?
Ao rodar a macro no dia 24 ficarão visíveis os registros do dia 24 pra trás.
Se além disso você quer que fiquem visíveis outros dias, então você precisa alterar os critérios.
#69353
JapSmart escreveu: 24 Fev 2022 às 10:20 Você tem algum curso de vba Excel para vender?
Veja se o tuto do link abaixo pode servir.

http://www.bertolo.pro.br/FinEst/Semana ... oExcel.pdf
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord