Я работаю над макросом ниже, который переносит выбранные строки на новый лист и удаляет его с исходного листа при нажатии кнопки команды.
Я пытаюсь заставить его автоматически отправлятьпри запуске этого макроса напишите xDepartment, что yDepartment перенес работу.Я хочу, чтобы в теле письма были все активные строки, которые передаются.
В данный момент при переносе строк я могу щелкнуть любую ячейку в строке на рабочем листе yDepartment (рядом с ней).и несмежно), и он перенесет столбцы A: L на лист xDepartment.Но когда я добавляю макрос, чтобы также отправить электронное письмо, он будет отправлять только детали определенных ячеек, которые я выбрал, вместо полной строки.
Кроме того, если ячейки не соседствуют (например,Я передаю строки 4-5 и 8-10 одновременно), он отправляет весь лист, который мне не нужен.
Кто-нибудь знает, как я могу это исправить, чтобы при работепередано, автоматическое письмо содержит то же содержимое, что и переданное?
Заранее спасибо!
Sub Pass_to_xDepartment()
If MsgBox("Do you want to pass the selected tours to XDepartment?", vbYesNo, "Pass to XDepartment") = vbNo Then Exit Sub
For Each WSheet In ActiveWorkbook.Worksheets
If WSheet.AutoFilterMode Then
If WSheet.FilterMode Then
WSheet.ShowAllData
End If
End If
For Each DTable In WSheet.ListObjects
If DTable.ShowAutoFilter Then
DTable.Range.AutoFilter
DTable.Range.AutoFilter
End If
Next DTable
Next WSheet
Dim Sendrng As Range
On Error GoTo StopMacro
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Note: if the selection is one cell it will send the whole worksheet
Set Sendrng = Selection
'Create the mail and send it
With Sendrng
ActiveWorkbook.EnvelopeVisible = True
With .Parent.MailEnvelope
' Set the optional introduction field thats adds
' some header text to the email body.
.Introduction = "The following rows have been completed. "
With .Item
.To = "EMAIL"
.CC =
.BCC = ""
.Subject = "Updated"
.Send
End With
End With
End With
StopMacro:
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
ActiveWorkbook.EnvelopeVisible = False
'Declare variables
Dim sht1 As Worksheet
Dim sht2 As Worksheet
Dim lastRow As Long
'Set variables
Set sht1 = Sheets("YDepartment")
Set sht2 = Sheets("XDepartment")
'Select Entire Row.Resize(ColumnSize:=12)
Intersect(Selection.EntireRow, Selection.Parent.Range("A:L")).Select
'Move row to destination sheet & Delete source row
lastRow = sht2.Range("A" & sht2.Rows.Count).End(xlUp).Row
With Selection
.Copy Destination:=sht2.Range("A" & lastRow + 1)
.EntireRow.Delete
End With
End Sub