我正在寻找一个分配给宏的按钮,当按下该按钮时,该宏将发送一封电子邮件,该电子邮件引用与该按钮同一行中的单元格中的数据。
我有发送电子邮件的代码,但目前只知道如何将其直接链接到某些单元格,例如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
我想做的是单击分配给一行的按钮,然后将仅使用该行中的单元格引用来运行宏。
任何帮助将不胜感激。
谢谢
答案 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