【问题标题】:Finetuning how the date is displayed after adding it to a cell微调将日期添加到单元格后的显示方式
【发布时间】:2019-03-29 16:50:34
【问题描述】:

刚开始在这里写 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

这会在单元格中插入“2019 年 2 月 1 日” - 这足以让我确认我正在查看哪个月份。但理想情况下,我想要“2019 年 2 月 1 日至 28 日”(或者,如果我在 11 月运行,则说“2019 年 10 月 1 日至 31 日”)。

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

不知道如何自己写这样的东西。指向从哪里开始的指针会很棒。

【问题讨论】:

  • 如果你想要整个月,为什么不显示为 2019 年 10 月?
  • 因为在极少数情况下,我做了一个部分报告-在部分报告的标题和其他地方注明,并且日期是手动输入的。我想要一个更直观的提醒,我正在编写一份完整的月度报告。
  • 最终我将编辑一个旧的、继承的、复杂的宏并将其添加到末尾。

标签: excel vba dateadd


【解决方案1】:

试试这样的:

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

【讨论】:

  • 如果不是实际的 Excel 日期也没关系,它真的只是为了视觉提醒,以后无需采取任何行动。具体的实际日期日期在其他地方的文件中。 (感谢您指出这一点,我没想过在我的问题中提到这一点)
  • 到目前为止,这似乎工作正常,在我的一些更复杂的宏中对其进行测试,谢谢!
【解决方案2】:

你也可以这样在一行上做:

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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多