Página 1 de 1

Criar Abas Automaticamente

Enviado: 14 Ago 2018 às 17:02
por diogobastos1985
Oi pessoal estou com um problema em uma rotina para criar abas na minha planilha

O meu codigo é muito maior mas o problema esta nesse rotina aqui:
Código: Selecionar todos
Sub codigo()
 
 
    cntsheets = Application.Sheets.Count
    Set NewSheet = Application.Worksheets.Add(after:=Worksheets(cntsheets))
    NewSheet.Name = "Regression"
    FinalCol = 0
    ShtName = Application.ActiveSheet.name
End Sub
Com essa rotina eu crio a aba "Regression". Para criar a aba "Regression1" eu preciso alterar no codigo o q era Regression para Regression1 e mandar rodar. e assim por diante até a aba Regression5

Bom, uma solucao q eu tentei foi essa:
Código: Selecionar todos
Sub codigo()
 
 
    cntsheets = Application.Sheets.Count
    Set NewSheet = Application.Worksheets.Add(after:=Worksheets(cntsheets))
    For i=1 to 5
    NewSheet.Name = "Regression" & i
    Next
    FinalCol = 0
    ShtName = Application.ActiveSheet.name
End Sub
Só que apesar de criar vem com um erro:
Código: Selecionar todos
"Erro de definicao de aplicativo ou de definição de objeto"
Como consigo evitar de entrar no codigo e ficar alterando de Regression para Regression1 e mandar rodar; de Regression2 para Regression3 e mandar rodar; e assim sucessivamente até Regression4

Re: Criar Abas Automaticamente

Enviado: 14 Ago 2018 às 18:31
por osvaldomp
Experimente:
Código: Selecionar todos
Sub InserePlanilhas()
 Dim i As Long
  For i = 1 To 5
   Sheets.Add after:=Sheets(Sheets.Count)
   ActiveSheet.Name = "Regression" & i
  Next i
End Sub

Re: Criar Abas Automaticamente

Enviado: 14 Ago 2018 às 18:33
por gfranco
Não sei se entendi direito mas veja se atende:
Código: Selecionar todos
Sub main()
    Dim i As Long
    
    For i = 1 To 5
    
        Worksheets.Add after:=ActiveSheet
        
        ActiveSheet.Name = "Regression" & i
    
    Next i

End Sub

Criar Abas Automaticamente

Enviado: 14 Ago 2018 às 18:47
por diogobastos1985
Ja me ajudou bastante. Mas o meu problema é ligeiramente diferente. Vi q meu codigo nao representou muito bem a minha duvida.
Quando eu incluo o
Código: Selecionar todos
For
Ele cria dentro do codigo 5 abas de uma vez só. Eu quero criar essas abas a cada vez q eu mando rodar o codigo. Porque o codigo deve preencher em cada aba aberta.

Seria assim:

Eu rodo o codigo e ele cria a aba Regression 1 e automaticamente dentro dessa rotina ele preenche essa aba. Depois eu rodo o codigo novamente e ele cria a aba Regression2 e preenche essa aba.

O For cria 5 planilhas de uma vez só. Não é isso q eu quero.

Há como a cada CLICK no botão da Macro eu mudar automaticamente o texto Regression. Por exemplo: O primeiro CLICK estaria associado ao texto Regression1 e automaticamente criaria a aba Regression1. E assim scessivamente.

Re: Criar Abas Automaticamente

Enviado: 14 Ago 2018 às 18:57
por diogobastos1985
gfranco escreveu:Não sei se entendi direito mas veja se atende:
Código: Selecionar todos
Sub main()
    Dim i As Long
    
    For i = 1 To 5
    
        Worksheets.Add after:=ActiveSheet
        
        ActiveSheet.Name = "Regression" & i
    
    Next i

End Sub
É quase isso. O q eu quero é que a cada CLICK que eu dou na Macro ela crie UMA aba. Não as cinco direto.

estou pensando em fazer um "IF " mas nao sei se consigo.

Re: Criar Abas Automaticamente

Enviado: 14 Ago 2018 às 19:08
por osvaldomp
Válido até 9 planilhas.
Código: Selecionar todos
Sub InserePlanilhas()
 Sheets.Add after:=Sheets(Sheets.Count)
 If InStr(Sheets(Sheets.Count - 1).Name, "Regression") = 0 Then
  ActiveSheet.Name = "Regression1"
 Else: ActiveSheet.Name = "Regression" & Right(Sheets(Sheets.Count - 1).Name, 1) + 1
 End If
End Sub

Criar Abas Automaticamente

Enviado: 14 Ago 2018 às 19:27
por diogobastos1985
PERFEITO!

Valeu!