Página 1 de 1
Repetir o dia de vencimento mensalmente
Enviado: 29 Nov 2018 às 17:13
por SandroLima
Boa tarde, pessoal
Como faço para repetir uma data de vencimento mensalmente?
Suponhamos que uma determinada célula de uma tabela me traga uma data de vencimento e eu queira manter o dia de vencimento no mês seguinte. Como deveria escrever essa linha desse código?
A grosso modo seria algo assim:
Código: Selecionar todosTabela.ListRows(1).Range(, 21).Value = Tabela.ListRows(2).Range(, 21).Value + 30
Mas entendam que a data de vencimento seria o mesmo dia de cada mês e não a cada 30 dias. Por exemplo todo dia 10 de cada mês. (10/11/20018, 10/12/2018, 10/01/2019 etc).
Obrigado a quem puder colaborar
Repetir o dia de vencimento mensalmente
Enviado: 29 Nov 2018 às 19:18
por gfranco
Boa noite.
Veja se é isso que precisa:
Cole o código a seguir num módulo, abra a janela de verificação imediata (CTRL + G) e rode o código.
Código: Selecionar todosSub main()
Dim i As Byte
For i = 1 To 10
Debug.Print VBA.DateSerial(2018, 9 + i - 1, 1)
Next i
End Sub
Re: Repetir o dia de vencimento mensalmente
Enviado: 29 Nov 2018 às 20:47
por SandroLima
Boa noite, pessoal.
Obrigado pela intenção de ajudar, GFranco.
Como não consegui aplicar o seu código à minha necessidade resolvi anexar um modelo resumido da planilha e os dois códigos que utilizo.
O primeiro botão (verde) serve para anexar um novo registro.
A ideia do segundo botão (laranja) seria realizar o parcelamento a partir da quantidade de parcelas informadas no último registro da tabela (no caso dessa tabela seria o registro da primeira linha) anexando então uma linha para cada parcela e informando as datas de vencimento (sempre com dia fixo do mês de vencimento - de acordo com a data informada no registro da primeira linha da tabela) e a competência daquela parcela em relação aos vencimentos (parcela 1 de x, parcela 2 de x, etc)
Acho que na planilha consegui deixar melhor explicado.
As linhas dos registros 7, 8 e 9 da tabela simulam o resultado desejado.
Obrigado a quem puder ajudar.
Re: Repetir o dia de vencimento mensalmente
Enviado: 30 Nov 2018 às 03:41
por babdallas
Não tive tempo de olhar seu arquivo, mas uma outra maneira é usar a função DATAM no VBA.
Pequeno exemplo
Código: Selecionar todosPublic Sub Teste()
Dim lngNParcelas as Long
Dim lngContador as Long
Dim datData as Date
datData = VBA.DateSerial(2018,11,30) 'Data de 30/11/2018
lngNParcelas = 30 'Número de parcelas
'Mostra a partir da célula A1 as datas equivalentes nos próximos meses
for lngContador = 1 to lngNParcelas
wshTeste.cells(lngContador,1) = Application.WorksheetFunction.Datam(datData, lngContador)
next lngContador
End Sub
Re: Repetir o dia de vencimento mensalmente
Enviado: 30 Nov 2018 às 06:50
por babdallas
Corrigindo a função datam em inglês...
Código: Selecionar todosPublic Sub Teste()
Dim lngNParcelas As Long
Dim lngContador As Long
Dim datData As Date
datData = VBA.DateSerial(2018, 11, 30) 'Data de 30/11/2018
lngNParcelas = 30 'Número de parcelas
'Mostra a partir da célula A1 as datas equivalentes nos próximos meses
For lngContador = 1 To lngNParcelas
wshTeste.Cells(lngContador, 1) = Application.WorksheetFunction.EDate(datData, lngContador)
Next lngContador
End Sub
Re: Repetir o dia de vencimento mensalmente
Enviado: 30 Nov 2018 às 09:11
por SandroLima
Bom dia, pessoal.
Obrigado pela ajuda, Babdallas.
Infelizmente também não soube aplicar o seu código na minha planilha.
Fico no aguardo se você ou alguém mais puder ajudar.
Muito obrigado de novo e tenha um bom dia.
Repetir o dia de vencimento mensalmente
Enviado: 30 Nov 2018 às 10:33
por Reinaldo
uma possibilidade, experimente.
Altere/troque a rotina -->"InserirNovaParcela"<-- pela abaixo
Código: Selecionar todosSub InserirNovaParcela()
Dim TabelaAtividades As ListObject
Set TabelaAtividades = wshAtividadesDiarias.ListObjects("TB_AtividadesDiarias")
Application.ScreenUpdating = False
For x = 2 To TabelaAtividades.ListRows(1).Range(1, 11).Value
TabelaAtividades.ListRows.Add (1), alwaysinsert:=True
TabelaAtividades.ListRows(2).Range.Copy
TabelaAtividades.ListRows(1).Range.PasteSpecial xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
TabelaAtividades.ListRows(1).Range(, 3).FormulaLocal = "=PRI.MAIÚSCULA(TEXTO([@Data];""DDDD""))"
TabelaAtividades.ListRows(1).Range(, 1).Value = TabelaAtividades.ListRows(1).Range(, 1).Value + 1
TabelaAtividades.ListRows(1).Range(, 12).Value = _
TabelaAtividades.ListRows(1).Range(, 10).Value / TabelaAtividades.ListRows(1).Range(, 11).Value
TabelaAtividades.ListRows(1).Range(, 13).Value = "Parcela " & x & " de " & _
TabelaAtividades.ListRows(1).Range(, 11).Value
TabelaAtividades.ListRows(1).Range(, 15).Value = _
VBA.DateAdd("m", 1, TabelaAtividades.ListRows(1).Range(, 15))
Next
Set TabelaAtividades = Nothing
Application.ScreenUpdating = True
End Sub
Re: Repetir o dia de vencimento mensalmente
Enviado: 30 Nov 2018 às 15:30
por SandroLima
Obrigado, Reinaldo.
Com algumas pequenas adequações aqui para a planilha atendeu perfeitamente.
Muito obrigado mesmo.