我正在尝试通过点击按钮生成一封电子邮件,并让它从该按钮所在行的第一个单元格中加载数据(作为电子邮件的主题行)。
示例:在第22行中,我在第X列放置一个按钮,单击该按钮时,它会使用单元格A22作为我的电子邮件的主题创建一封电子邮件。
我知道如何通过直接将主题行数据输入到脚本中来实现此目的,但我想避免为电子表格中的大量行创建数百个脚本。
以下是我目前的手动输入方法:
Private Sub CommandButton1_Click()
Dim outobj, mailobj
Set outobj = CreateObject("Outlook.Application")
Set mailobj = outobj.CreateItem(0)
With mailobj
.To = "xxxxxxxxx@xxxxxxxx.com"
.Subject = "XXXXXXXXXXXX"
.Body = "XXXXXXXXXXXXXXXXXXXXXXX"
.Display
End With
'Clear the memory
Set outobj = Nothing
Set mailobj = Nothing
End Sub
我只需要在相应的按钮行中填充A列中的主题。 我想我需要创建另一个对象,但我不确定正确的代码是什么,我不知道如何将脚本拉为“.subject =”。
以下是我尝试过的基本数据:
►ActiveSheet.Buttons(Application.Caller).TopLeftCell
►“按下按钮的行:”& ActiveSheet.ShapesApplication.Caller).TopLeftCell.Row
►DimSubjectTo作为字符串
SubjectTo = Cells(XXX,XXX).Value
.subject = SubjectTo
网上还有其他一些建议。
所有人都使用原始剧本,但我无法弄清楚如何将它们融入到我想要做的事情中。
我甚至尝试使用Form Shape而不是ActiveX Button。
答案 0 :(得分:0)
从您的代码示例中,您似乎使用的是 ActiveX 样式按钮。我知道无法从ActiveX按钮确定行号,但如果切换到表单控件类型按钮,则检索行很容易。
Sub Button2_Click()
MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
End Sub
对于大量行,每行一个按钮是不切实际的。您可以使用一个依赖于所选单元格或活动单元格的按钮来标识该行。另一种可能性是Worksheet.BeforeDoubleClick事件宏,只要双击其中一行(因此根本没有按钮),就会打开电子邮件。