将日期添加到单元格后微调日期的显示方式

Finetuning how the date is displayed after adding it to a cell

这里刚开始写VBA,初学者。

我正在寻求帮助来微调我显示的日期。借助我在网上找到的示例,我有一个模块可以将上个月和上一年的名称放入我的总计工作表中的一个单元格中,它可以完成我需要完成的工作。

不过,为了让它更完美,我想更改显示的日期信息。

这是 Office 365 中的 Excel。我已在线搜索示例并阅读有关使用 DateAdd 的教程,但无法在任何地方找到它。 (问题的一部分是我太新了,我不知道如何用 vba-speak 来找到好的答案!)

我现在用的:

Sub PreviousMonthBasedOnCurrentMonth()

Dim ws As Worksheet

Set ws = Worksheets("Totals")

ws.Range("A1") = Format(DateAdd("m", -1, Date), "mmmm yyyy")

End Sub

这现在将 "February 1, 2019" 插入到单元格中 - 这些数据足以让我确认我正在查看哪个月份。但理想情况下,我想要 "February 1-28, 2019"(或者说 "October 1-31, 2019",如果我在 11 月份 运行)。

如何显示 'first day of month - last day of month' 部分?那是 DateAdd 的一部分,还是从头开始编写更多代码?

我自己也不知道怎么写这样的东西。指出从哪里开始会很棒。

尝试这样的事情:

Dim dt, dt2

dt = DateAdd("m", -1, Date) 'this time last month

dt2 = DateSerial(Year(Date), Month(Date), 1) - 1 'last day of previous month

Debug.Print Format(dt2, "mmmm") & " 1-" & Day(dt2) & " " & Format(dt2, "yyyy")

注意 Excel 虽然不会将此视为日期...

您也可以这样在一行中完成:

Debug.Print Format(DateAdd("m", -1, Date), "mmmm") & " 1-" & Format(CDate(WorksheetFunction.EoMonth(DateAdd("m", -1, Date), 0)), "dd, yyyy")

Debug.Print Format(DateAdd("m", -1, Date), "mmmm") & YourPartialDateVariableHere & Format(CDate(WorksheetFunction.EoMonth(DateAdd("m", -1, Date), 0)), "dd, yyyy")