如何使用 Visual Basic 根据同一行中另一个单元格中的条件 select 一个单元格

how to use Visual Basic to select a cell based on criteria in another cell in same line

我目前正在使用 Visual Basic 在 excel 中编写一个宏,该宏将根据列中遇到的特定日期发送电子邮件。我已附上示例传播的屏幕截图 sheet 以试图帮助阐明我正在尝试做的事情。

到目前为止,在编写的宏中,一旦满足日期,程序就会发送一封电子邮件告诉我它的到期日。

我需要帮助的部分是电子邮件的主题我希望它发送与日期所在的行相对应的“名称”和“序列号”。例如(来自我所附的截图) 在“2022 年 1 月 2 日”(C 栏,第 3 行)当电子邮件在主题中发送时,它将添加信息“Gauge”(A 栏,第 3 行)和“23456”(B 栏,第 3 行) .

我需要它为满足条件的每个日期执行此操作。

电子邮件主题如下所示:

序列号为“23456”的“仪表”到期。

我已经尝试了所有我能想到的方法,将 returns 在 R 中作为 True 的整行添加到电子邮件主题行中。我正在碰壁,正在寻找我必须的新方向不见了。

For Each cell In r

    If cell.Value = Date + 7 Then

        Dim Email_Subject, Email_Send_From, Email_Send_To, _
        Email_Cc, Email_Bcc, Email_Body As String
        Dim Mail_Object, Mail_Single As Variant

        Email_Subject = "Gauge Calibration Due"
        Email_Send_From = "Quality@hotmail.com"
        Email_Send_To = "mikenorth@hotmail.com"
        Email_Cc = ""
        Email_Body = f
        
        
        On Error GoTo debugs
        Set Mail_Object = CreateObject("Outlook.Application")
        Set Mail_Single = Mail_Object.CreateItem(0)
        With Mail_Single
        .subject = Email_Subject
        
        .To = Email_Send_To
        .cc = Email_Cc
        .body = Email_Body
        .send
        End With


    End If

   
Next


Exit Sub

如果“r”已经是您的日期范围,并且成功遍历它们并弹出电子邮件,那么您只需要主题 - 试试这个?

For Each cell In r

If cell.Value = Date + 7 Then

    Dim Email_Subject As String
    Dim Email_Send_From, Email_Send_To, _
    Email_Cc, Email_Bcc, Email_Body As String
    Dim Mail_Object, Mail_Single As Variant

    Email_Subject = cell.Offset(0,-2) & " with Serial Number " & cell.Offset(0,-1) & " is due."
    Email_Send_From = "Quality@hotmail.com"
    Email_Send_To = "mikenorth@hotmail.com"
    Email_Cc = ""
    Email_Body = f
    
    
    On Error GoTo debugs
    Set Mail_Object = CreateObject("Outlook.Application")
    Set Mail_Single = Mail_Object.CreateItem(0)
    With Mail_Single
    .subject = Email_Subject
    
    .To = Email_Send_To
    .cc = Email_Cc
    .body = Email_Body
    .send
    End With


End If


Next cell