运行分配给该行单元格的宏的按钮

时间:2020-01-10 15:42:50

标签: excel vba

我正在寻找一个分配给宏的按钮,当按下该按钮时,该宏将发送一封电子邮件,该电子邮件引用与该按钮同一行中的单元格中的数据。

我有发送电子邮件的代码,但目前只知道如何将其直接链接到某些单元格,例如A1,B1,C1。

Sub Email_From_Excel_Basic()

Dim emailApplication As Object
Dim emailItem As Object

Set emailApplication = CreateObject("Outlook.Application")
Set emailItem = emailApplication.CreateItem(0)

' Now we build the email.

emailItem.to = Range("A1")

emailItem.Subject = Range("B1")

emailItem.Body = Range("C1")

emailItem.Display

Set emailItem = Nothing
Set emailApplication = Nothing

End Sub

我想做的是单击分配给一行的按钮,然后将仅使用该行中的单元格引用来运行宏。

任何帮助将不胜感激。

谢谢

2 个答案:

答案 0 :(得分:0)

我的建议是有一个按钮并使它在活动行上触发。您可以在工作表中选择所需的行,然后按按钮。 ActiveCell.row属性将拉动您的选择。 ws.Cells函数接受row和column的参数。使用ActiveCell.row指定行,同时对列进行硬编码以选择所需的单元格。

在某些宏上使用Active<anything>可能会有些棘手,但是只要按钮和数据在同一工作表上,就可以了。

Dim ws As Worksheet
Dim row As Integer

Set ws = ActiveSheet
row = ActiveCell.row

emailItem.to = ws.Cells(row, 1)
emailItem.Subject = ws.Cells(row, 2)
emailItem.Body = ws.Cells(row, 3)

答案 1 :(得分:0)

ActiveSheet.Buttons(Application.Caller)为您提供按钮的属性,您可以使用该按钮查找其下方的行。

Sub Email_From_Excel_Basic()

 Dim emailApplication As Object
 Dim emailItem As Object

 Set emailApplication = CreateObject("Outlook.Application")
 Set emailItem = emailApplication.CreateItem(0)

 ' Now we build the email.
 Set n = ActiveSheet.Buttons(Application.Caller)
 Dim num As String
 num = n.TopLeftCell.Row

 emailItem.to = Range("A" & num)
 emailItem.Subject = Range("B" & num)
 emailItem.Body = Range("C" & num)

 emailItem.Display


 Set emailItem = Nothing
 Set emailApplication = Nothing

End Sub