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.
:D