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.
Por Stickdaleh
Posts
#57607
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!
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#57612
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
Por Stickdaleh
Posts
#57632
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!
Por Stickdaleh
Posts
#57651
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?
Por osvaldomp
#57654
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)
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