Я настраиваю новую электронную таблицу, в которой регистрируются проблемы с товарами, которые склад пытался зарезервировать на складе. каждая строка содержит номер материала, описание, QTY, поставщика и адрес электронной почты лиц, которым принадлежит учетная запись поставщика.
Когда команда склада вводит соответствующие данные в лист, я хочу, чтобы в конце каждой строки была кнопка, которая при нажатии отправляла по электронной почте лицам, владеющим учетной записью поставщика, всю строку, на которой находится кнопка (A2 : O2) для кнопки один, (A3: O3) для кнопки два и так далее. было бы по крайней мере 2000 строк, которые будут нуждаться в этом.
Теперь я написал код VBA, который способен на это (я признаю, что это действительно уродливый способ выстроить строку и заголовки в ряд), но только для первой строки. Я мог бы сделать это для 2000 строк, но это означает, что нужно сделать 2000 кнопок и изменить код VBA 2000 раз только для изменения ряда ячеек.
Есть ли альтернативный способ заполнить желаемое автоматическое электронное письмо, когда команда заполняет новую строку?
'' '
Private Sub Worksheet_BeforeDoubleClick
(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("O2:O10000")) Is Nothing Then [P2: P10000]
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = [A1] & " " & [B1] & " " & [c1] & " " & [d1] & " " & [e1] & " " & [G1] & " " & [H1] & " " & [J1] & " " & [L1] & vbNewLine & " " & [A2] & " " & [B2] & " " & [c2] & " " & [d2] & " " & [e2] & " " & [G2] & " " & [H2] & " " & [J2] & " " & [L2]
В случае ошибки Продолжить Далее
With xOutMail
.To = [O2]
.CC = ""
.BCC = ""
.Subject = "NEW MATERIAL ADDED TO 2200 LIST"
.Body = xMailBody
.send 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub