返回电子邮件主题和正文中的相邻单元格值



我正在尝试将一段代码放在一起,但它一直返回错误...过去已经将一些非常简单的代码放在一起,但对修复代码并不精通,并且似乎无法解决我迄今为止拥有的代码中出现的问题......

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

从识别每个"Y"出现的单元格引用开始(作为"值"(。代码似乎无需在主题和正文中输入任何客户端名称的值即可工作。

尝试使用偏移值选项,但它不断返回错误 - 不确定如何纠正。

对于我做错了什么,任何意见都值得赞赏 - 如果在此期间我可以进一步澄清任何事情,请告诉我!

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只有过程级范围。变量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

因为theValuemymacro范围内;这是你传递的论点。


有关进一步阅读,请参阅了解范围和可见性。

相关内容

最新更新