excel - 从相邻单元格细节动态改变 CC 场
问题描述
我在当前正在工作的 excel 工作簿中有一段 VBA 代码,但是当尝试向 VBA 添加其他功能时,代码返回错误。
背景:单击按钮时,如果 U 列包含值“Y”,则会发送一封电子邮件,其中包含电子邮件主题和正文中的客户名称(W 列)。我想添加客户经理的电子邮件地址(第五列),以便每发送一封电子邮件都会更改。
我知道 Rng 是在过程级范围内,并且它只对 notify() 可见,所以我的目标是预先定义它,然后将它“调用”到 mymacro()。我试图添加一个额外的 Sub,但没有奏效。
尝试过使用 2 个 if 语句(如下所示),但也不认为这在正确的轨道上。
我认为问题可能与我错误地定义范围有关?或者可能错误地定义了“EmailAddr”?
Sub notify()
Dim Rng As Range
Dim EmailAddr As String
For Each Rng In Range("U3:W200")
If (Rng.Value = "Y") Then
mymacro theValue:=Rng.Offset(0, 2).Value
End If
If (Rng.Value = "Y") Then
mymacro EmailAddr = Rng.Offset(0, 1).Value
End If
Next Rng
End Sub
Private Sub mymacro(theValue As String, EmailAddr 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 created via the Compliance Register." & vbNewLine & vbNewLine & _
"Please review the insurance(s) for " & theValue & " that are due to expire in the next 30 days." & vbNewLine & vbNewLine
With xOutMail
.To = "generalmanager@gmail.com;financemanager@gmail.com"
.CC = EmailAddr
.BCC = ""
.Subject = "Insurance(s) for " & theValue & " are expiring soon."
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
如果从 notify() 和 mymacro() 中删除所有“EmailAddr”组件,该代码将完美运行 - 但是,当然,CC 组件留空。在直观地更改代码以满足我的需要方面,我仍然是新手,所以朝着正确的方向前进会很棒。
让我知道我是否可以在此期间澄清任何事情。
解决方案
你只需要一个循环;改变
If (Rng.Value = "Y") Then
mymacro theValue:=Rng.Offset(0, 2).Value
End If
If (Rng.Value = "Y") Then
mymacro EmailAddr = Rng.Offset(0, 1)
End If
至
If (Rng.Value = "Y") Then
mymacro theValue:=Rng.Offset(0, 2).Value, EmailAddr:=Rng.Offset(0, 1)
End If
并删除Dim EmailAddr As String
,因为它是 的命名参数mymacro
,而不是局部变量。
推荐阅读
- unicode - 在 Debian Buster 上使用 unzip 解压未知编码的 .zip 文件
- javascript - 承诺在未定义中得到解决
- swift - UITapGestureRecognizer 隐藏 UITableViewCell 上的键盘点击
- python - 将 JSON 转换为 CSV 时出错
- angular - 如何使用路由器以角度导航发送对象?
- postgresql - 如何在 localhost 上运行 2 个 PostgreSQL 服务器?
- python - 如何按特定顺序将列添加到数据框中?
- vb.net - 计算 CSV 文件中的唯一值
- jetbrains-ide - Windows 上的 JetBrains IDE:使用 Git Bash 执行运行配置
- python - 当您在调用 show() 之前打开和关闭 PySimpleGui 窗口时,即使图形窗口关闭,Matplotlib 的 show() 函数也会阻塞