0

我正在尝试通过单击按钮生成一封电子邮件,并让它从按钮所在行的第一个单元格中加载数据(作为电子邮件的主题行)。

示例:在第 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

► Dim SubjectTo As String
    SubjectTo = Cells(XXX,XXX).Value
    .subject = SubjectTo

还有很多其他关于网络的建议。

所有人都在他们的原始脚本中工作,但我不知道如何将它们合并到我想要做的事情中。

我什至尝试使用表单形状而不是 ActiveX 按钮。

4

1 回答 1

0

从您的代码示例中,您似乎正在使用ActiveX样式按钮。我不知道如何从 ActiveX 按钮确定行号,但如果您切换到表单控件类型的按钮,则检索该行很容易。

Sub Button2_Click()
    MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
End Sub

对于大量行,每行只有一个按钮是不切实际的。您可以有一个按钮,它依赖于选定的单元格或活动单元格来识别行。另一种可能性是Worksheet.BeforeDoubleClick事件宏,只要双击其中一行(因此根本没有按钮),它就会打开一封电子邮件。

于 2015-10-12T22:21:17.517 回答