Página 1 de 1
Macro para classificar coluna em crescente
Enviado: 02 Nov 2019 às 23:08
por FJunior
Boa noite. Estou fazendo uma planilha de cadastro de clientes, na qual as células da coluna "B" são numeradas automaticamente conforme as células correspondentes da coluna "C" são preenchidas com os nomes dos clientes. No entanto, estou precisando de uma macro que coloque a numeração das células da coluna "B" em ordem crescente novamente quando eu excluir o nome do cliente da célula correspondente (coluna "C"). Segue em anexo a planilha. Obrigado!
Re: Macro para classificar coluna em crescente
Enviado: 03 Nov 2019 às 10:17
por osvaldomp
Experimente:
Código: Selecionar todosSub OrdenaColunaB()
Range("B9:B" & Cells(Rows.Count, 2).End(4).Row).Sort Key1:=[B9], Order1:=xlAscending
End Sub
Re: Macro para classificar coluna em crescente
Enviado: 03 Nov 2019 às 13:58
por FJunior
Oi Osvaldo. Obrigado pela ajuda. Eu não consegui fazer funcionar, ainda estou engatinhando no excel VBA, mas seria muito eu pedir pra vc colocar no projeto do arquivo que eu anexei para eu ver o que eu estou fazendo de errado? Obrigado mais uma vez.
Re: Macro para classificar coluna em crescente
Enviado: 03 Nov 2019 às 15:08
por osvaldomp
Olá, Junior.
Se entendi corretamente, a sua ideia é reorganizar a numeração da coluna B após executar o código que exclui um nome na coluna C. Se for isso então eu sugiro renumerar aquela coluna em lugar de ordenar. No seu exemplo atual há nove nomes em C e em B números de 1 a 9. Supondo que sejam excluídos três nomes, então segundo a sua ideia inicial de ordenar a coluna B (que já está ordenada ...

), a situação passaria para seis nomes em C e 1 a 9 em B, ou seja, sobrariam três números sem nomes. Por essa razão eu sugiro limpar B e renumerar de acordo com a quantidade de nomes em C.
Se você quiser testar essa então ideia instale uma cópia do código abaixo em qualquer módulo.
Código: Selecionar todosSub RenumeraColunaB()
Range("B9:B" & Cells(Rows.Count, 2).End(3).Row).Value = ""
[B9] = 1: Range("B9").AutoFill Destination:=Range("B9:B" & Cells(Rows.Count, 3).End(3).Row), Type:=xlFillSeries
End Sub
Aí você poderá chamar o código acima no final do código do botão
Excluir, conforme abaixo.
no lugar desta linha
coloque esta
Re: Macro para classificar coluna em crescente
Enviado: 09 Nov 2019 às 22:19
por FJunior
Boa noite Osvaldo. Funcionou perfeitamente!
E se puder me ajudar em mais um detalhe ... Eu gostaria de retirar a planilha ("O:AA") da aba "Plan1" e colocá-la na aba "Plan3", mas não estou conseguindo alterar o comando do "Módulo 5" para que funcione corretamente. Segue planilha em anexo. Obrigado!
Re: Macro para classificar coluna em crescente
Enviado: 10 Nov 2019 às 10:12
por osvaldomp
Re: Macro para classificar coluna em crescente
Enviado: 10 Nov 2019 às 21:13
por FJunior
Boa noite Osvaldo.
Desculpe pela minha falta de conhecimento, rsrsrs

. Tudo que consegui fazer no excel até hoje foi devido a minha curiosidade, não tenho nenhum conhecimento na área e por isso sou muito grato por sua ajuda

. Vou tentar explicar melhor. Eu recortei as colunas "O:AA" da Plan1 e colei em uma nova aba "Plan3", atualizei os comandos dos botões "Copiar" e "Limpar", mas não sei como fazer para atualizar o comando do botão "Clique aqui para iniciar a consulta" que está no Módulo 5. Segue em anexo a planilha com as alterações iniciais. Mais uma vez muito obrigado pela ajuda!!!
Macro para classificar coluna em crescente
Enviado: 10 Nov 2019 às 21:42
por FJunior
Este comando (Módulo 5) que eu preciso atualizar para as modificações que fiz na planilha:
Range("C8:M1924").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _
("P4:Z5"), CopyToRange:=Range("Plan1!Extract"), Unique:=False
Range("B9").Select
Re: Macro para classificar coluna em crescente
Enviado: 11 Nov 2019 às 19:09
por osvaldomp
Experimente uma cópia do código abaixo no lugar do existente.
Código: Selecionar todosSub ConsultaAvançada()
Sheets("Plan1").Range("C8:M" & Sheets("Plan1").Cells(Rows.Count, 3).End(3).Row).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Plan3").Range("B4:L5"), CopyToRange:=Range("Plan3!B8:L8"), Unique:=False
End Sub
Re: Macro para classificar coluna em crescente
Enviado: 12 Nov 2019 às 17:59
por FJunior
Boa tarde Osvaldo. Obrigado, funcionou perfeitamente. Porém, não é sempre que acontece, mas algumas vezes quando vou abrir o arquivo aparece uma mensagem de erro: "Erro em tempo de execução '1004': O método Select da classe Range falhou". E quando eu clico em depurar, me mostra:
Private Sub Workbook_Open()
frmCadastro.Show ' Tarjado em amarelo
End Sub
Re: Macro para classificar coluna em crescente
Enviado: 12 Nov 2019 às 23:07
por osvaldomp
FJunior escreveu: ... mas algumas vezes quando vou abrir o arquivo aparece uma mensagem de erro:...
O erro não tem relação com o código que passei. Ele ocorre se a planilha ativa não for a
Plan1 ao salvar o arquivo, pois no evento
Initialize do Form, que é disparado ao reabrir o arquivo, há um comando para selecionar a célula
B9 daquela planilha e esse comando não se presta para selecionar uma célula que não seja da planilha ativa.
Para evitar o erro acrescente a linha em vermelho conforme abaixo.
Private Sub UserForm_Initialize()
Plan1.Activate
Plan1.Range("B9").Select
Re: Macro para classificar coluna em crescente
Enviado: 12 Nov 2019 às 23:51
por FJunior
Perfeito Osvaldo, agora está tudo funcionando muito bem. Muito obrigado pela ajuda.