Note: The other languages of the website are Google-translated. Back to English

Hur skickar jag e-post om en viss cell modifieras i Excel?

Den här artikeln talar om att skicka ett e-postmeddelande via Outlook när en cell i ett visst intervall ändras i Excel.

Skicka e-post om cell i ett visst intervall har modifierats med VBA-kod


Skicka e-post om cell i ett visst intervall har modifierats med VBA-kod

Om du behöver skapa ett nytt e-postmeddelande automatiskt med aktiv arbetsbok bifogad när en cell i intervallet A2:E11 ändras i ett visst kalkylblad, kan följande VBA-kod hjälpa dig.

1. I kalkylbladet som du behöver skicka e-post baserat på dess modifierade cell inom ett visst intervall, högerklicka på arkfliken och klicka sedan på Visa kod från snabbmenyn. Se skärmdump:

2. I pop-up Microsoft Visual Basic för applikationer kopiera och klistra in under VBA-koden i kodfönstret.

VBA-kod: Skicka e-post om cell i ett angivet intervall ändras i Excel

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2017/9/12
    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("A2:E11")
    Set xRgSel = Intersect(Target, xRg)
    ActiveWorkbook.Save
    If Not xRgSel Is Nothing Then
        Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Cell(s) " & xRgSel.Address(False, False) & _
            " in the worksheet '" & Me.Name & "' were modified on " & _
            Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
            " by " & Environ$("username") & "."

        With xMailItem
            .To = "Email Address"
            .Subject = "Worksheet modified in " & ThisWorkbook.FullName
            .Body = xMailBody
            .Attachments.Add (ThisWorkbook.FullName)
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Anmärkningar:

1). I koden, A2: E11 är det intervall du skickar e-post baserat på.
2). Ändra e-postadressen efter behov xMailBody raden i koden.
3). Ersätt E-postadress med mottagarens e-postadress i raden .To = "E-postadress".
4). Ändra e-postämnet i raden .Subject = "Kalkylblad modifierat i" & ThisWorkbook.FullName.

3. tryck på andra + Q samtidigt för att stänga Microsoft Visual Basic för applikationer fönster.

Från och med nu ändras alla celler i intervall A2: E11, ett nytt e-postmeddelande skapas med den uppdaterade arbetsboken bifogad. Och alla angivna fält som ämne, mottagare och e-postadress kommer att listas i e-postmeddelandet. Vänligen skicka e-postmeddelandet.

Anmärkningar: VBA-koden fungerar bara om du använder Outlook som e-postprogram.


Relaterade artiklar:


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (37)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Jag har fastnat i nedanstående VB-kod. Jag försöker få e-postmeddelanden till användaren där uppgifterna har ändrats. E-post fungerar men när jag gör någon ändring initieras e-post på en gång men jag vill ha e-post när excel-ark sparas och stängs efter att ha gjort alla ändringar för alla användare som påverkade. Detta bör också fungera för alla ark i hela excel-arbetsboken.

Snälla hjälp ...

Privat Sub Workbook_BeforeSave (ByVal SaveAsUI Som Boolean, Avbryt Som Boolean)

'****Deklaration av objekt och variabler****

Dim xRgSel As Range Dim xOutApp As Object Dim xMailItem As Object Dim xMailBody As String Dim mailTo As String

On Error Resume Next

Sheets("TargetSheet").Range("TargetRange").Välj

Application.ScreenUpdating = Falskt Application.DisplayAlerts = Falskt

'Set xRg = Range("A" & Rows.Count).End(xlUp).Row

Ställ in xRg = Range("A2:DA1000")
Ställ in xRgSel = Intersect(Target, xRg)


ActiveWorkbook.Save
'**********Outlook-applikation öppnar**********

Om inte xRgSel är ingenting då

Ställ in xOutApp = CreateObject("Outlook.Application")
Ställ in xMailItem = xOutApp.CreateItem(0)

xMailBody = "Cell(er) " & xRgSel.Address(False, False) & _
" i kalkylbladet '" & Me.Name & "' ändrades på " & _
Format$(Nu, "mm/dd/åååå") & " vid " & Format$(Nu, "hh:mm:ss") & _
" av " & Environ$("användarnamn") & "."
'*************Hittar mottagarlista*************

Om Cells(xRgSel.Row, "A").Value = "Pankaj" Då

mailTo = "pank12***@gmail.com"

End If

Om Cells(xRgSel.Row, "A").Value = "Nitin" Då

mailTo = "pank****@gmail.com"

End If

Om Cells(xRgSel.Row, "A").Value = "Chandan" Då

mailTo = "pakxro**@gmail.com"

End If
'***************E-post skriver*************

Med xMailItem

.To = mailTo
.Subject = "Kalkylblad modifierat i" & ThisWorkbook.FullName
.Body = xMailBody
'.Attachments.Add (ThisWorkbook.FullName)
.Visa

Sluta med

Ställ in xRgSel = Ingenting
Ställ in xOutApp = Ingenting
Ställ in xMailItem = Ingenting

End If

Application.DisplayAlerts = Sant
Application.ScreenUpdating = True
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Kära Pankaj Shukla,
Ställ din Excel-fråga till vårt forum: https://www.extendoffice.com/forum.html för att få mer support om Excel från vår Excel-proffs.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag kunde skapa makrot, men jag har ett problem. Jag skulle vilja skicka ett e-postmeddelande automatiskt när en cell når en viss tröskel. Cellen är en formel. När beräkningssumman går under nämnda tröskel gör det ingenting; men om jag skriver direkt i cellen kommer det att bearbeta makrot som planerat. Förstör formeln makrot?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Sissy Jones,
Metoden i den här artikeln: Hur skickar man automatiskt e-post baserat på cellvärde i Excel?
https://www.extendoffice.com/documents/excel/4656-excel-send-email-based-on-cell-value.html kan hjälpa dig att lösa problemet.
Denna kommentar minimerades av moderatoren på webbplatsen
Kära Admin,


Jag behöver din hjälp,



Jag har ett excel för att övervaka dagliga uppgifter som utförs av vår arbetare från fältet, så är detta möjligt att utlösa ett e-postmeddelande från excel-arket om den killen misslyckades med att uppdatera uppgifterna i det excel-arket vid en viss tidpunkt.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Kan inte hjälpa till med detta.
Denna kommentar minimerades av moderatoren på webbplatsen
Om jag vill skicka cellvärdet istället för adressen... vad ska jag då ändra i koden?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Du kan prova nedanstående VBA-kod.

Privata delarkivsförändring (ByVal-mål som område)
Dim xRgSel As Range
Dim xOutApp som objekt
Dim xMailItem som objekt
Dim xMailBody As String
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Ställ in xRg = Range("A2:E11")
Ställ in xRgSel = Intersect(Target, xRg)
ActiveWorkbook.Save
Om inte xRgSel är ingenting då
Ställ in xOutApp = CreateObject("Outlook.Application")
Ställ in xMailItem = xOutApp.CreateItem(0)
xMailBody = "Cell(er) " & xRgSel.Address(False, False) & _
xRgSel.Value & _
" i kalkylbladet '" & Me.Name & "' ändrades på " & _
Format$(Nu, "mm/dd/åååå") & " vid " & Format$(Nu, "hh:mm:ss") & _
" av " & Environ$("användarnamn") & "."

Med xMailItem
.To = "E-postadress"
.Subject = "Kalkylblad modifierat i" & ThisWorkbook.FullName
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Visa
Sluta med
Ställ in xRgSel = Ingenting
Ställ in xOutApp = Ingenting
Ställ in xMailItem = Ingenting
End If
Application.DisplayAlerts = Sant
Application.ScreenUpdating = True
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Vad händer om vi bara vill ha de uppdaterade kommentarerna i den cellen och inte hela cellvärdet. Det ska bara visa de senaste kommentarerna som lagts till i cellen
Denna kommentar minimerades av moderatoren på webbplatsen
Hittade du det här?
Denna kommentar minimerades av moderatoren på webbplatsen
Bra information.
Fråga angående vilken information som kan läggas till i mejlet.
Med ditt exempel ovan....

Om du hade ett värde i F4, hur skulle du inkludera F4-värdet i e-postmeddelandet som genererades när D4 ändrades?
Denna kommentar minimerades av moderatoren på webbplatsen
om jag måste skicka hela raden då?
Denna kommentar minimerades av moderatoren på webbplatsen
Jag har försökt ovan VBA-kod: Skicka e-post om cellen i ett angivet intervall ändras i Excel. Denna VBA fungerar för mig förutom att skicka e-post. När data ändras inom det givna intervallet genereras ett e-postmeddelande automatiskt med modifierade celldetaljer. E-postmeddelandet skickas dock inte automatiskt till mottagaren och användaren måste klicka på skicka-knappen i e-postmeddelandet. Det jag tittar på här är att e-postmeddelandet måste skickas till mottagarna automatiskt när det genereras. Snälla hjälp mig att ange en kod för detta. Tack så mycket
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Jimmy Joseph,
Vänligen ersätt raden ".Display" med ".Send". Hoppas jag kan hjälpa till. Tack för din kommentar.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej; finns det något sätt att ändra text som visas med hjälp av information från andra celler (från första raden och första kolumnen)? till exempel, om jag ändrar cell K15, vill jag inkludera information om cellerna A15 och K1 i meddelandet? vad ska jag ändra i koden? tack så mycket
Denna kommentar minimerades av moderatoren på webbplatsen
hej Laona. får du reda på hur man kan göra detta?
Denna kommentar minimerades av moderatoren på webbplatsen
Hallå. Hur ändrar jag koden så att ett e-postmeddelande skickas till en annan e-postadress om ett annat cellområde redigeras?
Denna kommentar minimerades av moderatoren på webbplatsen
Någon hjälp med denna begäran? Jag har samma problem. Jag vill lägga till flera e-postadresser per rad, men när jag ändrar en rad ändras hela kalkylbladet. Hur kan jag begränsa ändringarna till endast en rad?
Denna kommentar minimerades av moderatoren på webbplatsen
Redigera linie:
1). I koden är A2:E11 intervallet du kommer att skicka e-post baserat på.
och
3). Ersätt e-postadressen med mottagarens e-postadress på raden .To = "E-postadress".

Fungerar bra.
Denna kommentar minimerades av moderatoren på webbplatsen
Kan du förklara detta ytterligare. Hur upprepar du koden för att skicka till ett annat e-postmeddelande baserat på ett annat intervall som ändras. Jag har försökt kopiera och klistra in koden nedan och ändra enligt din kommentar, men fortfarande verkar bara det första intervallet utföra kommandot och skriva e-postmeddelandet.
Denna kommentar minimerades av moderatoren på webbplatsen
Är det någon som har ett svar på detta?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag försökte skicka e-postmeddelanden på mitt ark med ett värde som ändrats på arket. Om i kolumn H kommer statusen att ändras till ="4" ska order-ID till vänster skickas till en användare. Arket fungerar dynamiskt så jag har en Range från D9:D140 där order-id:n lagras och statusändringar görs i samma område på H9:H140. Hur kan jag nå målet att göra det och skicka order-ID till min kund när status har ändrats till ="4"?
Denna kommentar minimerades av moderatoren på webbplatsen
Skulle det vara möjligt att visa en annan referenscell i xMailBody i samma kolumn istället för de modifierade celladresserna?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Sam, Menar du att välja en referenscell slumpmässigt i samma kolumn i den modifierade celladressen? Eller skriv in en referenscell manuellt i kodens xMailBody-rad? Det är lätt att manuellt skriva en referenscell i koden, omge bara referenscellen med dubbla citattecken som visas nedan: xMailBody = "Cell(er) " & "D3" & ", " & "D8" & _

Denna kommentar minimerades av moderatoren på webbplatsen
Är det möjligt att ändra detta så att det bara visar e-postmeddelandet om en cell i ett intervall har ändrats till att säga "Ja". Skulle vilja att det inte gör någonting om det är något annat värde.
Denna kommentar minimerades av moderatoren på webbplatsen
Tack för koden, den här koden fungerar när jag anger värdet och trycker på enter. Men i mitt fall fylls cellen automatiskt med formel, och när värdet nås öppnar den inte e-postmeddelandet så koden fungerar inte i det här fallet. Tack på förhand!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej hakana,
Följande VBA-kod kan hjälpa dig att lösa problemet. Ge det ett försök. Tack för din feedback.

Private Sub Worksheet_Change(ByVal Target As Range)
'Uppdaterad av Extendoffice 2022/04/15
Dim xRgSel As Range
Dim xOutApp som objekt
Dim xMailItem som objekt
Dim xMailBody As String
Dim xBoolean Som Boolean
Dim xItsRG As Range
Dim xDDs som räckvidd
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = Falskt
Ställ in xRg = Range("E2:E13")

Ställ in xItsRG = Intersect(Target, xRg)
Ställ in xDDs = Intersect(Target.DirectDependents, xRg)
Ställ in xDs = Intersect(Target.Dependents, xRg)
Om inte (xItsRG är ingenting) då
Ställ in xRgSel = xItsRG
xBoolean = Sant
ElseIf Not (xDDs är ingenting) då
Ställ in xRgSel = xDDs
xBoolean = Sant
ElseIf Not (xDs är ingenting) Då
Ställ in xRgSel = xDs
xBoolean = Sant
End If


ActiveWorkbook.Save
Om xBoolean Då
Debug.Print xRgSel.Address


Ställ in xOutApp = CreateObject("Outlook.Application")
Ställ in xMailItem = xOutApp.CreateItem(0)
xMailBody = "Cell(er) " & xRgSel.Address(False, False) & _
" i kalkylbladet '" & Me.Name & "' ändrades på " & _
Format$(Nu, "mm/dd/åååå") & " vid " & Format$(Nu, "hh:mm:ss") & _
" av " & Environ$("användarnamn") & "."

Med xMailItem
.To = "E-postadress"
.Subject = "Kalkylblad modifierat i" & ThisWorkbook.FullName
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Visa
Sluta med
Ställ in xRgSel = Ingenting
Ställ in xOutApp = Ingenting
Ställ in xMailItem = Ingenting
End If
Application.DisplayAlerts = Sant
Application.ScreenUpdating = True
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag har skapat en liknande kod men jag skulle vilja *** ett villkor där om ett cellvärde raderas kommer det inte att skicka ett e-postmeddelande när det sparas/stängs. Det kommer bara att skicka ett e-postmeddelande när ett cellvärde har angetts. Vet du hur man gör detta? Det här är min kod:

KOD FÖR AUTOMATISK E-POST TILL NÅGON NÄR EXCEL-ARBETSBOKEN UPPDATERAS

ARKKOD:

Alternativ Explicit 'Excel-arbetsbladsändringshändelseintervall
Privata delarkivsförändring (ByVal-mål som område)
If Not Intersect(Target, Range("C3:D62")) är ingenting då
'Target.EntireRow.Interior.ColorIndex = 15
Range("XFD1048576"). Värde = 15
End If
If Not Intersect(Target, Range("I3:J21")) är ingenting då
'Target.EntireRow.Interior.ColorIndex = 15
Range("XFD1048576"). Värde = 15
End If
End Sub


ARBETSBOKSKOD:

Privat underarbetsbok_BeforeClose(Avbryt som boolesk)
If Me.Save = False Then Me.Save

Dim xOutApp som objekt
Dim xMailItem som objekt
Dim xName As String

If Range("XFD1048576").Värde = 15 Då
On Error Resume Next
Ställ in xOutApp = CreateObject("Outlook.Application")
Ställ in xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
Med xMailItem
.To = "e-post"
.CC = ""
.Subject = "meddelande"
.Body = "meddelande!"
.Bilagor.*** xNamn
.Visa
'.skicka
Sluta med
End If
Ställ in xMailItem = Ingenting
Ställ in xOutApp = Ingenting



End Sub

Privat Sub Workbook_Open ()
Range("XFD1048576"). Rensa
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hej alla,

der Code würde gut für mein Vorhaben passage, aber gibt es die Möglichkeit, that is a e-mail with speichern schreibt mit allen Zellen die geändert wurden? So wie es jetzt ist ,würde er jede geänderte Zelle einzeln senden. Det är då problematiskt när zB 10 Zellen angepasst blev 10 e-postmeddelanden bedeuten würde. Och gibt es die Möglichkeit, die gesamte geänderte Zelle bei mir von A bis Y in einer E-Mail to senden? Bisher haut der ja die Zellnummer i e-postmeddelandet, när det inte finns något annat filter.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Esser123,
Följande VBA-koder kan hjälpa. Efter att ha modifierat cellerna i det angivna intervallet och sparat arbetsboken, kommer ett e-postmeddelande att dyka upp för att lista alla modifierade celler i e-postmeddelandet, och arbetsboken kommer också att infogas som en bilaga i e-postmeddelandet. Följ följande steg:
1. Öppna kalkylbladet som innehåller cellerna du vill skicka e-postmeddelanden baserat på, högerklicka på arkfliken och klicka på Visa kod från högerklicksmenyn. Kopiera sedan följande kod till ark(kod)-fönstret.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220921
Dim xAddress As String
Dim xDRg, xRgSel, xRg As Range

xAddress = "A1:A8"
Set xDRg = Range(xAddress)
Set xRgSel = Intersect(Target, xDRg)
On Error GoTo Err1
If Not xRgSel Is Nothing Then
If ThisWorkbook.gChangeRange = "" Then
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
Else
Set xRg = Range(ThisWorkbook.gChangeRange)
Set xRg = Application.Union(xRg, xRgSel)
ThisWorkbook.gChangeRange = xRg.AddressLocal(False, False, xlA1, True, False)
End If
End If
Exit Sub
Err1:
      ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
End Sub

2. Dubbelklicka i Visual Basic-redigeraren Denna arbetsbok i den vänstra rutan, kopiera sedan följande VBA-kod till Denna arbetsbok (kod) fönster.
Option Explicit
Public gChangeRange As String
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220921
Dim xRgSel, xRg As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
'On Error Resume Next
On Error GoTo Err1
Set xRg = Range(gChangeRange)
If Not xRg Is Nothing Then
   Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Email Body: " & vbCrLf & "The following cells were modified:" & xRg.Address(False, False)
        With xMailItem
            .To = "Email Address"
            .Subject = "Worksheet modified in " & ThisWorkbook.FullName
            .Body = xMailBody
            .Attachments.Add (ThisWorkbook.FullName)
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
End If
Err1:
gChangeRange = ""
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Jag behöver lite hjälp med att utlösa ett e-postmeddelande med en liten förändring. Istället för ett numeriskt värde eller att mata in informationen i cellen manuellt, kommer celler i kolumn B att ändras till "Y" utlöst från en formel i andra celler i den raden. Formeln för kolumn B är =IF([@[Antal i lager]]>[@[Ombeställningsnivå]],,"Y"), vilket visar att lagret är lågt i lager och behöver en ny beställning. Jag måste utlösa ett automatiskt e-postmeddelande när ett cellvärde ändras i kolumn B till "Y", så jag meddelas automatiskt via e-post om det låga lagret. Jag har försökt allt jag kan tänka mig för att ändra koder som redan tillhandahållits, men ingenting verkar fungera för mig... snälla hjälp!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Kathryn F,
Följande VBA-kod kan hjälpa dig att lösa problemet. Vänligen ge det ett försök. Tack för din kommentar.
Dim xRg As Range
'Update by Extendoffice 20221019
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("B:B"), Target)
If xRg Is Nothing Then Exit Sub
If Target.Value = "Y" Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2"
On Error Resume Next
With xOutMail
.To = "Email Address"
.CC = ""
.BCC = ""
.Subject = "send by cell value test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Calculate()
Dim xTarget As String
Dim xRg As Range
'Set xRg = Application.Range("B:B")
Set xRg = Intersect(Range("B:B"), Selection.EntireRow)
On Error GoTo Err01
If xRg.Value = "Y" Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hej och tack för denna tutorial.
J'ai cependant une difficulté pour l'application de la plage de recherche.
Dans le code, j'ai demandé à vérifier la plage C2:C4.
Tout fonctionne bien si je modifiera C2, C3 eller C4 unika. Cela fonctionne aussi si je modifiera C2+C3+C4 ou C2+C3 ou C3+C4 mais cela ne fonctionne pas si j'ai un saut dans la plage. Som exempel kan du ändra C2 och C4 utan modifierare C3.
Est-ce que quelqu'un pourrait m'aider pour m'indiquer où se trouve mon erreur ?
Merci d'avance.

Privata delarkivsförändring (ByVal-mål som område)
'Uppdaterad av Extendoffice 20220921
Dim xAddress As String
Dim xDRg, xRgSel, xRg As Range

xAddress = "C2:C4"
Ställ in xDRg = Range(xAddress)
Ställ in xRgSel = Intersect(Target, xDRg)
Vid fel GoTo Err1
Om inte xRgSel är ingenting då
Om ThisWorkbook.gChangeRange = "" Då
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
annars
Ställ in xRg = Range(ThisWorkbook.gChangeRange)
Ställ in xRg = Application.Union(xRg, xRgSel)
ThisWorkbook.gChangeRange = xRg.AddressLocal(False, False, xlA1, True, False)
End If
End If
Exit Sub
Err1:
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
End Sub


-----

Explicit alternativ
Public gChangeRange As String
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Uppdaterad av Extendoffice 20220921
Dim xRgSel, xRg As Range
Dim xOutApp som objekt
Dim xMailItem som objekt
Dim xMailBody As String
'Om fel återuppta nästa
Vid fel GoTo Err1
Ställ in xRg = Range(gChangeRange)
Om inte xRg är ingenting då
Ställ in xOutApp = CreateObject("Outlook.Application")
Ställ in xMailItem = xOutApp.CreateItem(0)
xMailBody = "Cher Jean-Marie, " & vbCrLf & vbCrLf & "Dans le fichier : " & ThisWorkbook.FullName & vbCrLf & "La plage de cellules a été modifiée :" & xRg.Address(False, False) & vbCrLf & vbCrLf & "Hjärtlighet"
Med xMailItem
.To = "x.xxxxxx@xxxx.fr"
.Subject = "Données modifiées" & ThisWorkbook.Name
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Visa
Sluta med
Ställ in xRgSel = Ingenting
Ställ in xOutApp = Ingenting
Ställ in xMailItem = Ingenting
End If
Err1:
gChangeRange = ""
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Jag skulle vilja skicka mejlet till 5 personer. Vilken avgränsare används mellan varje e-postadress?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Joe,
Använd semikolon för att separera e-postadresserna.
Denna kommentar minimerades av moderatoren på webbplatsen
Här är en annan fråga. Om en cell ändras skickas ett e-postmeddelande. om 3 celler ändras, skickar den 3 e-postmeddelanden. Hur stoppar man detta så att det bara skickar 1 mail när redigeringarna är klara?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Joe,
Om du angav intervallet som "A2:E11" i koden. Hur kan jag verifiera när hela redigeringen är klar?
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL