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

时间:2019-03-29 16:50:35

标签: excel vba dateadd

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

我正在寻找有关微调显示日期的帮助。在网上找到的示例的帮助下,我有了一个模块,可以将上个月和年份的名称放入“总计”工作表中的单元格中,它可以满足我的需要。

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

这是Office 365中的Excel。我已经在线搜索了示例,并阅读了有关使用DateAdd的教程,但在任何地方都找不到。 (部分问题是我很新,我不知道如何在vba说话中用短语表达来找到好的答案!)

我现在使用的是

Sub PreviousMonthBasedOnCurrentMonth()

Dim ws As Worksheet

Set ws = Worksheets("Totals")

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

End Sub

现在这将在单元格中插入“ 2019年2月1日”,这对于我来说足以确定我在看哪个月。但理想情况下,我想要“ 2019年2月1日至28日”(或者,如果我在11月运行此程序,则说“ 2019年10月1日至31日”)。

如何显示“月份的第一天-月份的最后一天”部分?是DateAdd的一部分,还是从头开始进行更多编码?

不确定自己如何写类似的东西。指向起点的指针会很棒。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

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仍不会将其视为日期...

答案 1 :(得分:0)

您也可以通过以下方式在一行上完成该操作:

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

OR

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