Excel Macro - автоматическая электронная почта - PullRequest
1 голос
/ 27 сентября 2019

Я настраиваю макрос в Excel для автоматической отправки электронного письма при обновлении ячейки.Можно ли включить в тело письма содержимое ячейки?Например, если ячейка G7 обновлена, включить содержимое ячейки B7 в электронную почту?Строка ячейки будет такой же, столбец изменится.

Это код, который я использую:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xRgSel As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xMailBody As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set xRg = Range("G2:G17")
    Set xRgSel = Intersect(Target, xRg)
    ActiveWorkbook.Save
    If Not xRgSel Is Nothing Then
        Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Hello," & vbCrLf & vbCrLf & "The worksheet " & Chr(34) & ActiveWorkbook.Sheets(3).Name & Chr(34) & "has been completed and ready for 1st level review."

        With xMailItem
            .To = ""
            .Subject = ""
            .Body = xMailBody
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Макрос работает отлично, но я хочу избавиться отимя листа и вместо этого отобразить сообщение в ячейке B2 (если ячейка G2 была обновлена.

1 Ответ

1 голос
/ 27 сентября 2019

Просто чтобы закрыть этот вопрос: вы можете получить строку, используя Target.Row.

Итак, следуя вашему примеру, вы можете обратиться к B2, используя

Me.Cells(Target.Row, 2)

или, возможно,

Me.Range("B" & Target.Row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...