Página 1 de 1
Alterar valor de uma célula quando a planilha está filtrada
Enviado: 13 Mai 2020 às 20:11
por FelipeCap
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
Alterar valor de uma célula quando a planilha está filtrada
Enviado: 14 Mai 2020 às 06:17
por AfonsoMira
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 = ""
Alterar valor de uma célula quando a planilha está filtrada
Enviado: 14 Mai 2020 às 14:00
por FelipeCap
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)
Alterar valor de uma célula quando a planilha está filtrada
Enviado: 15 Mai 2020 às 05:29
por AfonsoMira
Boas, não consigo visualizar o ficheiro anexado.
Poderia anexar novamente.
Alterar valor de uma célula quando a planilha está filtrada
Enviado: 15 Mai 2020 às 05:35
por AfonsoMira
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.
