Eu uso uma macro de autofiltro para obter valores de hoje - 3 meses, mas enquanto o resultado parece estar correto, a data formatada é mostrada errada:
Sub LastThreeMonths()
Dim strDateFirst As String
Dim strDateLast As String
Dim strMonthNow As String
strMonthNow = Month(Now)
strDateFirst = (strMonthNow - 3) & "/" & "1" & "/" & frmEntry.cboYear.Value
strDateLast = strMonthNow & "/" & LastDay(CDate(strMonthNow)) & "/" & frmEntry.cboYear.Value
MsgBox Format(strDateFirst, "dd-mm-yyyy") & vbCrLf & Format(strDateLast, "dd-mm-yyyy")
End Sub
O Debug.Print retorna isso para 01-07-2022 strDateFirst
e isso para strDateLast
30-10-2022 Deve ser "07-01-2022" para a strDateFirst
variável.
O filtro funciona corretamente embora.
O que estou perdendo? Eu acho que tem algo a ver com a subtração de "3" do mês atual.
Use as declarações de tipo corretas e use DateSerial para definir a data:
Ao definir o dia como
0
noMonth(Now) + 1
retornará o último dia do mês atual.