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.
#49894
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!
Você não está autorizado a ver ou baixar esse anexo.
#49896
Experimente:
Código: Selecionar todos
Sub OrdenaColunaB()
 Range("B9:B" & Cells(Rows.Count, 2).End(4).Row).Sort Key1:=[B9], Order1:=xlAscending
End Sub
#49898
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.
#49900
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 todos
Sub 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
Código: Selecionar todos
Range("B9").Select      'Seleciona a célula "B9"
coloque esta
Código: Selecionar todos
RenumeraColunaB
#50104
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!
Você não está autorizado a ver ou baixar esse anexo.
#50108
FJunior escreveu: Eu gostaria de retirar a planilha ("O:AA") da aba "Plan1"
"retirar a planilha da aba" ? ~~~> :o :?: :?: :?: que língua é essa ?

e colocá-la na aba "Plan3",
No seu arquivo não existe Plan3 ;)

mas não estou conseguindo alterar o comando do "Módulo 5"
Qual comando ? De qual código ?
Com base na documentação da Microsoft uma ou mais planilhas formam um Arquivo Excel ou uma Pasta de Trabalho Excel. O nome de cada planilha está na guia da planilha, e as guias das planilhas ficam posicionadas junto ao rodapé da tela. Procure seguir essa nomenclatura, assim permitirá identificar a sua necessidade.
#50117
Boa noite Osvaldo.
Desculpe pela minha falta de conhecimento, rsrsrs :oops: . 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!!!
Você não está autorizado a ver ou baixar esse anexo.
#50118
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
#50157
Experimente uma cópia do código abaixo no lugar do existente.
Código: Selecionar todos
Sub 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
#50188
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
Você não está autorizado a ver ou baixar esse anexo.
#50198
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
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