Ir ao conteúdo

Posts recomendados

Postado

Fala pessoal, boa noite! Gostaria de uma ajuda, se possível, com a seguinte situação:

 

Estou montando um cadastro de controle de integrantes de um grupo voluntário. Neste arquivo, tenho a tabela principal, que exibirá um resumo de algumas informações pré-selecionas, e tenho as demais abas. Cada nova aba representa um voluntário cadastrado (inclusive nomeada de acordo com o nome da pessoa), e dentro da aba há inúmeras informações sobre o respectivo voluntário.

 

Eu gostaria de saber se é possível editar uma macro para rodar de forma que toda nova planilha incluída tenha seu respectivo nome registrado numa linha (digamos, linha 1) da planilha principal? Além disso,

 

1 - É possível fazer com que esta macro rode/atualize automaticamente sempre que uma nova planilha seja criada (i.e., um novo nome seja incluído na primeira linha da planilha principal)?

 

2 - Caso uma planilha seja excluída, e possível que esta macro acompanhe a exclusão e elimine o nome anteriormente incluído?

 

Desde já grato pela atenção!

 

Caio 

Postado

So pra esclarecer seja qual for o formato atual da planilha. 

 

Base de dados deve ser unica.

 

Ao invés de ter uma macro que cadastre a cada guia.

 

Tenha uma macro que use apenas 1 guia para realizar o cadastro.

Postado

Amigo, obrigado pelo feedback, mas admito que não sei se entendi seu comentário!

 

De todo modo, deixo aqui, a título de esclarecimento, algumas informações:

 

1 - Preciso dos nomes das demais abas na planilha principal porque estou aplicando a função INDIRETO neles para fazer buscas específicas;

2 - A organização de novos membros por aba (e não de forma única em uma planilha) se dá em razão da forma e do volume de dados: os dados de cada voluntário estão organizados de forma matricial e são muito extensos. Colocar toda essa informação em uma única planilha, além de me parecer visualmente confuso, seria menos (ou igualmente) prático que em organiza-los por aba/planilha.

 

Abs!

Postado

Exatamente pelo fato de ter a possibilidade de ter muitos dados se deve centralizar tudo em uma unica base (em linhas)

 

Imagine se você tiver 500 cadastros? Sao 500 abas. Acha mesmo produtivo?

 

É so uma sugestão.

 

 

Postado

Amigo, obrigado, agora eu pude entender sua observação. De todo modo, o cenário prático é diverso deste que você colocou: não há muitos dados porque há muitos cadastros (na verdade, são pouquíssimos, longe de 500); há muitos dados POR cadastro. Organiza-los em linha, no momento, sequer é uma opção prática, visto que todos os cadastrados tem matrizes de informação. Sem prejuízo, muito obrigado pelas observações!

Postado

Obrigado, @Patropi

 

Eu até já havia encontrado essa macro pesquisando previamente. Ela me ajudou um pouco, mas não é exatamente o que eu estou buscando!

 

Precisava de uma macro que, além de incluir o nome de cada aba, também rode (i.e., atualize) sempre que uma aba for incluída, excluída ou renomeada.

 

Obrigado a todos pelos imputs!

Postado

Veja se a solução abaixo atende.

Instale o código no módulo da planilha principal (altere o nome da planilha no código se necessário).

Funcionamento - ao ativar a planilha principal a lista com o nome das planilhas será atualizada na coluna A daquela planilha, na mesma ordem das guias das planilhas.

 

Private Sub Worksheet_Activate()
 Dim ws As Worksheet
  [A:A] = ""
   For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "principal" Then Cells(Rows.Count, 1).End(3)(2) = ws.Name
   Next ws
End Sub

 

Postado

@osvaldomp muito obrigado, é quase exatamente o que eu preciso!!

 

É possível fazer esta macro rodar automaticamente sempre que uma planilha for incluída, excluída ou renomeada?

 

No mais, obrigado novamente!

 

Caio 

Postado

Experimente o código abaixo no módulo de EstaPasta_de_trabalho. Remova o código anterior.

Deve funcionar ao ativar/incluir/excluir planilhas, mas não para troca de nome.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 Dim ws As Worksheet
  With Sheets("principal")
   .[A:A] = ""
   For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "principal" Then .Cells(Rows.Count, 1).End(3)(2) = ws.Name
   Next ws
  End With
End Sub

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!