By kylejohnson95757@gmail.com v pátek 01. března 2019
Publikováno v vynikat
Odpovědi 0
záliby 0
Zobrazení 3.2
Hlasy 0
Dobrý den,
Jsem nový ve VBA. Napsal jsem kód pro odeslání e-mailu, pokud dojde ke změně hodnoty buňky ve sloupci F, a kód funguje skvěle. Ale chci se ujistit, že sešit je uložen před odesláním e-mailu. Text e-mailu musí obsahovat hodnotu referenční buňky, což je hodnota ze sloupce A řádku se změněnou hodnotou. Prosím nepoužívejte msg, nebude fungovat se sešitem. Sešit má formulář a ten načte vstupní hodnotu do určených buněk. Kód funguje dobře s formulářem. Ale pokud někdo vstoupí do listu a ručně aktualizuje hodnotu, e-mail se odešle uživatelům, což nechci, dokud nebude soubor uložen. Prosím pomozte! Díky předem.

Soukromá dílčí tabulka_Změna (ByVal Target As Range)
Dim s1, s2, s3, s4, s5, s6 jako rozsah
Nastavit s1 = rozsah("F1310:F1334")
Nastavit s2 = rozsah("F1426:F1450")
Nastavit s3 = rozsah("F1339:F1363")
Nastavit s4 = rozsah("F1455:F1479")
Nastavit s5 = rozsah("F1368:F1392")
Nastavit s6 = rozsah("F1397:F1421")
On Error Resume Next
Pokud Target.Cells.Count > 1, pak Exit Sub
'najděte hodnotu změněnou ve sloupci F
If Intersect(Target, Union(s1, s2, s3, s4, s5, s6)) Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value <> "" Pak
Dim xOutApp jako objekt
Dim xOutMail jako objekt
Dim xMailBody jako řetězec
Dim xMailText jako řetězec
Set xOutApp = CreateObject("Outlook.Application")
Nastavit xOutMail = xOutApp.CreateItem(0)
'hodnota indexu ze sloupce A řádku, na který se hodnota změnila, zahrnuta v těle pošty
xMailText = Target.Offset(, -5).Value
xMailBody = "Ahoj" & vbNewLine & vbNewLine & _
"Faktura přijata za " & xMailText & vbNewLine & vbNewLine & _
"Děkuji" & vbNewLine & vbNewLine & _
"Pane J"
On Error Resume Next
S xOutMail
.To = "test@gmail.com"
.CC = ""
.BCC = ""
.Subject = "Faktura přijata"
.Tělo = xMailBody
.Poslat
Konec s
Při chybě GoTo 0
Nastavte xOutMail = nic
Nastavte xOutApp = Nic
End If
End Sub
Zobrazit celý příspěvek