Página 1 de 1

Cria aba conforme lista

Enviado: 31 Jul 2020 às 15:33
por Stickdaleh
Prezados,

Estou precisando de uma macro, que cria abas conforme a lista da aba "DADOS". Ela pega o nome/data1/data2 e monta em um formato padrão para todas e coloca-os em um local definido e por ultimo coloca o nome da pessoa na aba (pode ser limitado ao máximo permitido de caracteres da aba ou até 20 caracteres). Conforme vai descendo a linha vai fazendo uma nova aba.

O número de linhas e abas vão depender de cada caso, então a quantidade de vezes que vai ocorrer o processo irá variar de acordo com a necessidade.

Desde já, agradeço a atenção de todos!

Re: Cria aba conforme lista

Enviado: 31 Jul 2020 às 17:47
por osvaldomp
Experimente:
Código: Selecionar todos
Sub InserePlanilhas()
 Dim n As Range
  Application.ScreenUpdating = False
  With Sheets("DADOS")
   For Each n In .Range("B2:B" & .Cells(Rows.Count, 2).End(3).Row)
    Sheets.Add after:=Sheets(Sheets.Count)
    With ActiveSheet
     .[C5:I5] = Array("NOME", , , , "DATA 1", , "DATA 2")
     .[D5] = n.Value: .Name = n.Value
     .[H5] = Format(n.Offset(, 1), "mm/dd/yyyy")
     .[J5] = Format(n.Offset(, 2), "mm/dd/yyyy")
     .Range("H:H,J:J").EntireColumn.AutoFit
    End With
   Next n
  End With
End Sub

Cria aba conforme lista

Enviado: 01 Ago 2020 às 19:40
por Stickdaleh
Funcionou!! Muito obrigado pelo seu tempo e atenção, me ajudou muito, vou deixar ainda como não resolvido pois vou testar em outras planilhas e talvez precise de ajuda.

Novamente, muito obrigado!

Re: Cria aba conforme lista

Enviado: 03 Ago 2020 às 15:19
por Stickdaleh
osvaldomp escreveu:Experimente:
Código: Selecionar todos
Sub InserePlanilhas()
 Dim n As Range
  Application.ScreenUpdating = False
  With Sheets("DADOS")
   For Each n In .Range("B2:B" & .Cells(Rows.Count, 2).End(3).Row)
    Sheets.Add after:=Sheets(Sheets.Count)
    With ActiveSheet
     .[C5:I5] = Array("NOME", , , , "DATA 1", , "DATA 2")
     .[D5] = n.Value: .Name = n.Value
     .[H5] = Format(n.Offset(, 1), "mm/dd/yyyy")
     .[J5] = Format(n.Offset(, 2), "mm/dd/yyyy")
     .Range("H:H,J:J").EntireColumn.AutoFit
    End With
   Next n
  End With
End Sub
A macro da erro quando tem nomes muito grandes, como faz para delimitar até uns 20 caracteres?

Re: Cria aba conforme lista

Enviado: 03 Ago 2020 às 17:04
por osvaldomp
Me parece que o limite é de 31 caracteres. Se você quiser experimentar com 30, então altere no código conforme abaixo.

no lugar de ~~~> .Name = n.Value

coloque ~~~> .Name = Left(n.Value, 30)