Excel VBA:Função para gerar o próximo trimestre a partir da data de entrada
Pergunta
Estou trabalhando em vba para excel e preciso usar uma função que possa inserir uma data que esteja no formato da data convertida do excel (como 40736).E imprima a data do trimestre imediatamente após a data de entrada no formato aaaammdd, onde os trimestres são 1º de janeiro, 1º de abril, 1º de julho e 1º de outubro.Todos os cálculos precisam ser feitos em vba, não na planilha.Como um exemplo:minha entrada pode ser 40736 (a data do Excel que corresponde a 12/07/2011.Gostaria que minha produção fosse 20111001, que corresponde ao trimestre seguinte.
Eu realmente não tenho certeza de como abordar isso, então qualquer ajuda com estratégias ou pedaços de código propostos seria ótimo.Obrigado
Solução
Aqui está uma pequena variação do código de Martin para dar o primeiro dia do próximo trimestre:
Function GetQuarterDate2(InDate As Date) As Date
Dim Quarter As Integer
Dim OutDate As Date
Dim yr As Long
Quarter = DatePart("q", InDate)
yr = Year(InDate)
If Quarter = 1 Then
OutDate = DateSerial(yr, 4, 1)
ElseIf Quarter = 2 Then
OutDate = DateSerial(yr, 7, 1)
ElseIf Quarter = 3 Then
OutDate = DateSerial(yr, 10, 1)
ElseIf Quarter = 4 Then
OutDate = DateSerial(yr + 1, 1, 1)
End If
GetQuarterDate2 = OutDate
End Function
Outras dicas
O procedimento abaixo deve funcionar, forneça sua data como argumento InDate;
Function GetQuarterDate(InDate As Date) As Date
Dim Quarter As Integer
Dim OutDate As Date
Quarter = DatePart("q",InDate)
If Quarter = 1 Then
OutDate = DateSerial(DatePart("yyyy",InDate),1,1)
ElseIf Quarter = 2 Then
OutDate = DateSerial(DatePart("yyyy",InDate),4,1)
ElseIf Quarter = 3 Then
OutDate = DateSerial(DatePart("yyyy",InDate),7,1)
ElseIf Quarter = 4 Then
OutDate = DateSerial(DatePart("yyyy",InDate),10,1)
End If
GetQuarterDate = OutDate
End Function