![](/img/trans.png)
[英]Automatically send an email if a specific cell value exists; include adjacent value in body
[英]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.