簡體   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