VBA Excel获取更新单元格的值

时间:2015-07-14 14:38:28

标签: excel vba excel-vba

好的,所以我一直在努力解决这个问题。我对VBA很新,所以请耐心等待。

我需要程序执行的操作是获取已更新的工作簿中的单元格值并将数据推送到电子邮件中。让我说我想看的范围是A4:A100。用户将销售订单号输入A10和A11。我需要我的程序从这些单元格中获取值,并在保存工作簿时将它们插入到电子邮件中。我已经有了这个问题末尾的代码,可以在保存工作簿时通过电子邮件发送人员列表。基本上我非常希望这封电子邮件包含输入的记录的ID(A列)。谢谢你的帮助。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
Cancel As Boolean)

Dim answer As String

answer = MsgBox("Would you like to save and email a notification?", vbYesNo,     "Save and Email")

If answer = vbNo Then Cancel = True
If answer = vbYes Then
'open outlook type stuff
Set OutlookApp = CreateObject("Outlook.Application")
Set OlObjects = OutlookApp.GetNamespace("MAPI")
Set newmsg = OutlookApp.CreateItem(olMailItem)
'add recipients
newmsg.Recipients.Add ("will.smead@cablevey.com")
newmsg.Recipients.Add ("will.smead@cablevey.com")
'add subject
newmsg.Subject = "Update on CREDIT HOLD list"
'add body
newmsg.Body = "Please check the Credit Hold excel file on the S drive for      updates."
newmsg.Display 'display
newmsg.Send 'send message
'give conformation of sent message
MsgBox "File saved and messages sent.", , "Saved and Sent"



End If


'save the document
'Me.Worksheets.Save

End Sub

1 个答案:

答案 0 :(得分:1)

您需要在正在观看的工作表中更改工作表更改事件 -

Sub worksheet_change(ByVal target As Range)

If Not Intersect(target, Range("A4:A100")) Is Nothing Then
    Dim ws As Worksheet
    Set ws = Sheets("changes")
    Dim lastrow As Integer
    lastrow = ws.Cells(Rows.Count, "A").End(xlUp).Row
    ws.Cells(lastrow + 1, 1) = target.Address
    ws.Cells(lastrow + 1, 2) = target
End If
End Sub

您需要创建一个名为changes的工作表,并在第1行col A& B喜欢"地址"和"新价值" -

enter image description here

你可以看到我拼错了,不得不纠正它。你应该在上面的宏中对那些东西进行排序。