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.
  • Avatar do usuário
#54762
Tenho 02 colunas, uma coluna STATUS(coluna T) e uma com Data de aprovação(coluna Y).

Preciso filtrar a coluna status = RECUSADA e, para cada linha que estiver com data preenchida na coluna Y preciso deixar em branco.

Abaixo estou colocando somente o trecho da macro que eu estava tentando fazer essa ação, porém sem sucesso, pois com esse comando ele está erroneamente executando nas linhas ocultas, ou seja, <> "RECUSADA"


Range("$A:$AB").SpecialCells(xlCellTypeVisible).AutoFilter Field:=20, Criteria1:="RECUSADA"

Range("T1").End(xlDown).End(xlUp).Offset(1, 0).Select

Do While ActiveCell <> ""

ActiveCell.Offset(0, 5).FormulaR1C1 = ""
ActiveCell.Offset(1, 0).Select

Loop
#54772
Boa dia.

Poderia enviar o ficheiro para poder ajudar melhor, obrigado.

Fica um pouco díficil sem o ficheiro mas tentei fazer um código.

Ora experimente:
Código: Selecionar todos
    Range("$A:$AB").AutoFilter Field:=20, Criteria1:="RECUSADA"
    Range("Y2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.FormulaR1C1 = ""
#54790
Afonso, obrigado pelo breve retorno.

Quase deu certo com a sua solução, porém no seu Range(Selection, Selection.End(xlDown)).Select , ele esta descendo somente até a primeira data preenchida(e no caso, essa coluna já possui linhas que o campo de data está vazio).
Eu declarei uma variável que se referencia pela coluna A que nunca terá célula em branco > linha_fim = Range("A1").End(xlDown).Row
Porém ao tentar substituí-la em sua sintaxe, ficando: Range(Selection, Selection.Range("Y" & linha_fim)).Select] , ele pega as linhas corretas porém acaba selecionando todas as colunas à direita também e deixa "" todos essas células.
Obs: criei um outro método sem filtragem e usando Do While/Loop, que já resolveu meu problema, mas ainda sim eu queria entender este seu caso que é mais rápido e eficiente.
Em anexo, ficheiro. (linha 172)
#54822
Boas, não consigo visualizar o ficheiro anexado.
Poderia anexar novamente.
#54823
Ora experimente este código para ver se faz o pretendido:
Código: Selecionar todos
'encontra ultima linha de registos
ultima_linha = Range("A10000").End(xlUp).Row
'Filtra pela palavra RECUSADA
Range("$A:$AB").AutoFilter Field:=20, Criteria1:="RECUSADA"
'Seleciona Célula "Y2"
    Range("Y2").Select
    'Seleciona desde "Y2" até ao ultimo registo
    Range("Y2:Y" & ultima_linha).Select
    'Seleciona apenas as células visíveis dentro desse range
    Selection.SpecialCells(xlCellTypeVisible).Select
    'Altera o valor das células selecionadas para ""(nada)
    Selection.FormulaR1C1 = ""
Alguma dúvida fique à vontade para chamar.
:D
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