繁体   English   中英

返回 email 主题和正文中的相邻单元格值

[英]Returning adjacent cell value in email subject & body

我正在尝试整理一段代码,但它一直返回错误...过去整理了一些非常简单的代码,但不太精通修复代码,似乎无法解决问题所在在我到目前为止的代码中......

背景:我有一个 excel 合规性工作簿(当然启用了宏),其中有各种列和截止日期。 如果任何列的到期日在接下来的 30 天内,则 V 列将返回“Y”。 在月初,如果任何行在 V 列中列出了“Y”,则 email 警报将发送到指定的 email 地址,并在主题和正文中包含客户名称(在 W 列中)。

从识别每个“Y”出现的单元格引用开始(作为“theValue”)。 该代码似乎可以在没有在主题和正文中输入任何客户名称值的情况下工作。

已尝试使用偏移值选项,但它一直返回错误 - 不知道如何纠正。

任何关于我做错了什么的意见表示赞赏 - 如果我能在此期间进一步澄清任何事情,请告诉我!

Sub notify()
    Dim Rng As Range
    For Each Rng In Range("V3:W200")
       If (Rng.Value = "Y") Then
        Call mymacro(Rng.Value)
       End If
    Next Rng
End Sub

Private Sub mymacro(theValue As String)
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Hi All" & vbNewLine & vbNewLine & _
              "This alert has been automatically created by the Client Compliance Register. Please ensure information for " & Rng.Offset(0, 1).Value & " is up to date." & vbNewLine & vbNewLine

    With xOutMail
        .To = "generalmanager@gmail.com"
        .CC = "accountmanager@gmail.com"
        .BCC = "managingdirector@gmail.com"
        .Subject = "Detail(s) for " & Rng.Offset(0, 1).Value & " are expiring soon."
        .Body = xMailBody
        .Display   'use .Send once complete
    End With

    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing

End Sub

正如评论中提到的:

rng只有过程级 scope 变量rng仅对过程notify可见。 您不能在mymacro中使用它。


要完成您的任务,请在调用mymacro时将rng.Offset(0, 1).Value作为参数传递。

Call mymacro(Rng.Offset(0, 1).Value) 

这里的Call是多余的; 所有你需要的是

mymacro Rng.Offset(0, 1).Value '<< no parentheses!

或者

mymacro theValue:=Rng.Offset(0, 1).Value

然后在mymacro中,更改每个实例

Rng.Offset(0, 1).Value

theValue

因为theValue的值mymacro中; 这是你传递的论点。


如需进一步阅读,请参阅了解 scope 和可见性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM