用于多个匹配单元检测的macros
我正在执行一个macros来检查E列date是否离当前date7天。
如果单元格date – 当前date= 7
然后发送包含具有匹配的单元格的行的电子邮件。 这是我的代码,它成功的工作,除了一个问题。
Sub Workbook_Open() Dim rngStart As Range Dim rngEnd As Range Dim rngCell As Range Dim strHtmlHead As String Dim strHtmlFoot As String Dim strMsgBody As String Dim strMsgBody1 As String Dim strMsg As String Dim objEmail As Object Dim OutlookApp As Object Dim OutlookMail As Object 'On Error GoTo ErrHnd 'only run if between midnight and 2AM 'If Hour(Now) < 2 Then 'setup basic HTML message header and footer 'setup start of body of message strMsgBody = "The following task(s) are due in less than 7 days :" 'Worksheet name With Worksheets("Sheet1") 'set start of date range Set rngStart = .Range("E1") 'find end of date range Set rngEnd = .Range("E" & CStr(Application.Rows.Count)).End(xlUp) 'loop through all used cells in column G For Each rngCell In .Range(rngStart, rngEnd) 'test if date is equal to 7 days from today If IsDate(rngCell.Value) Then If rngCell.Value - Int(Now) = 7 Then 'add to message - use task name from column A (offset -3) 'change as required strMsgBody1 = strMsgBody & "<Br>" & "<Br>" & "Task: " & rngCell.Offset(0, -3).Text _ & " is due on " & rngCell.Text & "<Br> " & "<Br> " & "Therefore please take necessary action" End If End If Next rngCell 'Note last test time/date rngEnd.Offset(1, -3) = Now rngEnd.Offset(1, -3).NumberFormat = "dd/mm/yy" End With 'put message together strMsg = strMsgBody1 'test message 'MsgBox strMsg 'create the e-mail object Set OutlookApp = CreateObject("Outlook.Application") Set OutlookMail = OutlookApp.CreateItem(0) With OutlookMail .To = "adrianadriananthony@outlook.com" .CC = "" .BCC = "" .Subject = "Task Alert" .HTMLBody = strMsg .Send End With Set OutlookMail = Nothing Set OutlookApp = Nothing Application.DisplayAlerts = True Application.ScreenUpdating = True 'remove the e-mail object Exit Sub 'error handler ErrHnd: Err.Clear End Sub
如果有两个或更多logging与date相符,则符合标准
细胞date – 当前date= 7
那么只有一个logging显示在电子邮件中并发送到电子邮件地址。
例如有三条logging如下所示:
并且只有第三个logging被检测到并附加到电子邮件的正文。
我需要知道为什么会发生这种情况? 我如何编辑我的代码来纠正?
要解决这个问题,请删除strMsgBody1
声明,并用strMsgBody
replace每个发生的strMsgBody
。 你不需要第二个variables。
- VBA从Outlook导出某些数据到Excel运行,但什么都不产生?
- Outlook VBA保存邮件附件,然后将附件数据复制到另一个Excel中,并通过邮件发送发送Excel
- 如何validationOutlook会话是否打开使用VBA
- VBA Outlook 2010.将特定的Outlook正文文本解压到excel
- 使用excel VBA在Outlook中添加包含图像的签名
- macros将excel电子邮件ID导出到Outlook分配列表
- 如何记住公共variables的值,并在下次打开excel文件时使用它在outlook中使用VBA
- Excel VBA Outlook.Recipients.Add(“别名”) – 处理未解决的项目
- 使用正则expression式提取URL