Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por Stickdaleh 27 Jul 2020 às 18:12
Membro Novato
Mensagens: 10
Reputação: 2
#57531
Boa noite,

Estou precisando montar uma macro ou até mesmo em formula de excel para autopreencher datas de acordo com os valores da data inicial informado em uma célula. Estava tentando fazer a macro mas por ter que ter formatação acabei me perdendo e decidi tentar com formulas.

O meu maior problema é que eu preciso fazer isso para 1000 abas, o ponto positivo, é que todas elas tem as informações no mesmo campo e estão em formatos idênticos, sendo possível, creio eu, automatizar esta tarefa.

Em anexo minha planilha que tentei através de formula, porém, esta não vai suprir minha necessidade, tendo em vista que as datas são diferentes para cada aba, sendo necessário puxar a formula de acordo com a data de cada aba.

Logo mais, chegarei em casa e posto minha macro caso queiram dar uma olhada também.

Grato pela atenção de todos,

Stickdaleh.
Apenas usuários registrados podem ver ou baixar anexos.
Por osvaldomp 28 Jul 2020 às 05:29
Excel Expert
Mensagens: 1785
Reputação: 895
#57532
Experimente:

Código: Selecionar todosSub InsereDatas()
 Dim ws As Worksheet
  For Each ws In ThisWorkbook.Sheets
   ws.[A4] = ws.[E2]: ws.[A4].AutoFill ws.[A4].Resize(ws.[F2] - ws.[E2] + 1)
  Next ws
End Sub
Por Stickdaleh 28 Jul 2020 às 10:39
Membro Novato
Mensagens: 10
Reputação: 2
#57533
osvaldomp escreveu:Experimente:

Código: Selecionar todosSub InsereDatas()
 Dim ws As Worksheet
  For Each ws In ThisWorkbook.Sheets
   ws.[A4] = ws.[E2]: ws.[A4].AutoFill ws.[A4].Resize(ws.[F2] - ws.[E2] + 1)
  Next ws
End Sub



Obrigado osvaldomp!!
Como eu faria para ele colocar as bordas para as demais colunas e linhas? Para ficarem todas com a mesma formatação?
Outra coisa, ele ta fazendo por dia, precisava que conservasse o valor da data inicial, depois fosse para o primeiro dia de cada mês e aí iria subindo mês a mês até a data final.

Grato pelo seu breve retorno,

StickdaleH
Por osvaldomp 28 Jul 2020 às 12:04
Excel Expert
Mensagens: 1785
Reputação: 895
#57534
Passei batido pelas datas. Corrigido abaixo. Desculpe.
Acrescentei as bordas.
Código: Selecionar todosSub InsereDatasV2()
 Dim ws As Worksheet, k As Long
  For Each ws In ThisWorkbook.Sheets
   k = DateDiff("m", ws.[E2], ws.[F2])
   ws.[A4] = ws.[E2]
   ws.[A5] = DateSerial(Year(ws.[E2]), Month(ws.[E2]) + 1, 1)
   ws.[A6].Resize(k).FormulaLocal = "=DATAM(A5;1)"
   ws.[A6].Resize(k).Value = ws.[A6].Resize(k).Value
   With ws.Range("A4:F" & ws.Cells(Rows.Count, 1).End(3).Row).Borders
    .LineStyle = xlContinuous: .Weight = xlThin
   End With
  Next ws
End Sub
Por Stickdaleh 30 Jul 2020 às 11:01
Membro Novato
Mensagens: 10
Reputação: 2
#57596
Showw, era isso mesmo, sempre me perco nos loops, mas também não teria tal conhecimento ainda para fazer as manipulações de datas hehe.

Muito obrigado por seu tempo e atenção!