【问题标题】:Put a Custom Date next to string in MS VBA在 MS VBA 中的字符串旁边放置一个自定义日期
【发布时间】:2021-11-23 20:15:44
【问题描述】:

我正在创建一个 VBA 宏,它将每周三将电子邮件发送到我的分发列表。

我想知道是否有办法在我打开分发列表时添加每周更新的动态自定义日期?

我想添加自定义日期的部分在这里:emailItem.Subject = "Training Report - DD-MM-YYYY"

我希望日期是每周的最后一个星期日。

非常感谢您的帮助!

这是我的代码:

Option Explicit

Sub Send_Email_With_Attachment()

Dim emailApplication As Object
Dim emailItem As Object


Set emailApplication = CreateObject("Outlook.Application")
Set emailItem = emailApplication.CreateItem(0)

'Now build the email.

emailItem.To = Range("A2").Value

emailItem.CC = Range("B2").Value

emailItem.Subject = "Training Report - DD-MM-YYYY"

【问题讨论】:

  • 每周或每月的最后一个星期日?
  • “每周的最后一个星期日”还是上周/当前周的最后一个星期日?
  • 上周日应该是Date + (1 - Weekday(Date)),下周日应该是Date + (8 - Weekday(Date))...根据需要格式化。

标签: vba


【解决方案1】:

编辑 我可能误解了你。如果您需要最后一个星期日而不是下一个星期日,您只需将代码的 nextSunday 部分替换为:

Dim lastSunday as Date
lastSunday = DateAdd("d", 1 - Weekday(Now), Now)

函数Weekday 为提供的日期参数返回一个表示星期几的整数。它返回的值如下:

  1. 适用于星期日或 (vbSunday)
  2. 对于星期一或 (vbMonday)
  3. 星期二(vbTuesday)

等等。所以今天 (23.11.2021) 星期二函数将返回数字 3。

函数DateAdd 在我们的例子中添加,因为第一个参数“d”到提供日期的天数。

我们使用的最后一个函数是Format,它根据提供的日期和格式“dd-MM-yyyy”返回一个字符串表示形式

因此,您设置主题的代码部分应如下所示:

...
Dim nextSunday as Date
nextSunday = DateAdd("d", -Weekday(Now) + 8, Now)

emailItem.Subject = "Training Report - " & Format(nextSunday, "dd-MM-yyyy") 

【讨论】:

  • 太棒了!这正是我想要的!非常感谢你的帮助! :) 这是我需要的代码: Dim lastSunday as Date lastSunday = DateAdd("d", 1 - Weekday(Now), Now)
猜你喜欢
  • 1970-01-01
  • 2022-12-11
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 2023-02-16
  • 1970-01-01
相关资源
最近更新 更多