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

Hvordan sendes e-mail, hvis en bestemt celle ændres i Excel?

Denne artikel taler om at sende en e-mail via Outlook, når en celle i et bestemt område ændres i Excel.

Send e-mail, hvis celle i et bestemt område er ændret med VBA-kode


Send e-mail, hvis celle i et bestemt område er ændret med VBA-kode

Hvis du automatisk skal oprette en ny e-mail med aktiv projektmappe vedhæftet, når en celle i området A2:E11 ændres i et bestemt regneark, kan følgende VBA-kode hjælpe dig.

1. I det regneark, som du skal sende e-mail baseret på dens modificerede celle i et bestemt interval, skal du højreklikke på arkfanen og derefter klikke på Vis kode fra genvejsmenuen. Se skærmbillede:

2. I popping up Microsoft Visual Basic til applikationer vindue, skal du kopiere og indsætte under VBA-kode i kodevinduet.

VBA-kode: Send e-mail, hvis celle i et bestemt interval ændres 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

Noter:

1). I koden, A2: E11 er det interval, du sender e-mail baseret på.
2). Skift e-mail-kroppen, som du har brug for xMailBody linje i koden.
3). Udskift Email adresse med modtagerens e-mail-adresse på linje .To = "E-mail-adresse".
4). Skift e-mail-emnet på linje .Subject = "Arbejdsark ændret i" & ThisWorkbook.FullName.

3. Tryk på andre + Q taster samtidigt for at lukke Microsoft Visual Basic til applikationer vindue.

Fra nu af ændres enhver celle i området A2: E11, en ny e-mail oprettes med den opdaterede projektmappe vedhæftet. Og alle specificerede felter som emne, modtager og e-mail-krop vil blive vist i e-mailen. Send e-mailen.

Bemærk: VBA-koden virker kun, hvis du bruger Outlook som dit e-mail-program.


Relaterede artikler:


De bedste Office-produktivitetsværktøjer

Kutools til Excel løser de fleste af dine problemer og øger din produktivitet med 80%

  • Genbruge: Indsæt hurtigt komplekse formler, diagrammer og alt, hvad du har brugt før; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner uden at miste data; Split celler indhold; Kombiner duplikerede rækker / kolonner... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Mere end 300 kraftfulde funktioner. Understøtter Office / Excel 2007-2021 og 365. Understøtter alle sprog. Nem implementering i din virksomhed eller organisation. Fuld funktioner 30-dages gratis prøveperiode. 60 dages pengene tilbage garanti.
kte-fane 201905

Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund
Sorter kommentarer efter
Kommentarer (37)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg sidder fast i under VB-koden. Jeg forsøger at få e-mail notifikation til brugeren, hvor dataene er blevet ændret. E-mail fungerer, men når jeg foretager en ændring, startes e-mail på én gang, men jeg vil have e-mail, når excel-ark gemmes og lukkes efter at have foretaget alle ændringerne til alle brugere, der har påvirket. Dette burde også virke for ethvert af arkene i hele excel-projektmappen.

Please help ...

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Annuller As Boolean)

'****Deklaration af objekter og 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ælg

Application.ScreenUpdating = Falsk Application.DisplayAlerts = Falsk

'Set xRg = Range("A" & Rows.Count).End(xlUp).Række

Indstil xRg = Range("A2:DA1000")
Indstil xRgSel = Intersect(Target, xRg)


ActiveWorkbook.Save
'**********Outlook-applikation åbner**********

Hvis ikke xRgSel er ingenting, så

Indstil xOutApp = CreateObject("Outlook.Application")
Indstil xMailItem = xOutApp.CreateItem(0)

xMailBody = "Cell(er) " & xRgSel.Address(False, False) & _
" i arbejdsarket '" & Me.Name & "' blev ændret på " & _
Format$(Nu, "mm/dd/åååå") & " ved " & Format$(Nu, "tt:mm:ss") & _
" af " & Environ$("brugernavn") & "."
'************* Finder modtagerliste*************

Hvis Cells(xRgSel.Row, "A").Value = "Pankaj" så

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

End If

Hvis Cells(xRgSel.Row, "A").Value = "Nitin" Så

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

End If

Hvis Cells(xRgSel.Row, "A").Value = "Chandan" Så

mailTo = "pakxro**@gmail.com"

End If
'*************** E-mail skriver*************

Med xMailItem

.Til = mailTil
.Subject = "Arbejdsark ændret i" & ThisWorkbook.FullName
.Body = xMailBody
'.Attachments.Add (ThisWorkbook.FullName)
.Skærm

Slut med

Indstil xRgSel = Intet
Indstil xOutApp = Ingenting
Indstil xMailItem = Ingenting

End If

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Pankaj Shukla,
Send dit Excel-spørgsmål til vores forum: https://www.extendoffice.com/forum.html for at få mere support om Excel fra vores Excel-professionelle.
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg var i stand til at oprette makroen, men jeg har et problem. Jeg vil gerne automatisk sende en e-mail, når en celle når en vis grænse. Cellen er en formel. Når beregningssummen kommer under den nævnte tærskel, gør den ikke noget; men hvis jeg skriver direkte i cellen, vil den behandle makroen som planlagt. Forstyrrer formlen makroen?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Sissy Jones,
Metoden i denne artikel: Hvordan sender man automatisk e-mail baseret på celleværdi i Excel?
https://www.extendoffice.com/documents/excel/4656-excel-send-email-based-on-cell-value.html kan hjælpe dig med at løse problemet.
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Admin,


Jeg har brug for din hjælp,



Jeg har en excel til at overvåge detaljerne i det daglige arbejde udført af vores medarbejder fra marken, så er det muligt at udløse en mail fra excel-ark, hvis den fyr undlod at opdatere dataene i det excel-ark på et givet tidspunkt.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
Kan ikke hjælpe med dette.
Denne kommentar blev minimeret af moderatoren på webstedet
Hvis jeg vil sende celleværdien i stedet for adressen .. hvad skal jeg så ændre i koden?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
Du kan prøve nedenstående VBA-kode.

Privat Sub Worksheet_Change (ByVal Target As Range)
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
Indstil xRg = Range("A2:E11")
Indstil xRgSel = Intersect(Target, xRg)
ActiveWorkbook.Save
Hvis ikke xRgSel er ingenting, så
Indstil xOutApp = CreateObject("Outlook.Application")
Indstil xMailItem = xOutApp.CreateItem(0)
xMailBody = "Cell(er) " & xRgSel.Address(False, False) & _
xRgSel.Value & _
" i arbejdsarket '" & Me.Name & "' blev ændret på " & _
Format$(Nu, "mm/dd/åååå") & " ved " & Format$(Nu, "tt:mm:ss") & _
" af " & Environ$("brugernavn") & "."

Med xMailItem
.To = "E-mail-adresse"
.Subject = "Arbejdsark ændret i" & ThisWorkbook.FullName
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Skærm
Slut med
Indstil xRgSel = Intet
Indstil xOutApp = Ingenting
Indstil xMailItem = Ingenting
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hvad hvis vi kun vil have de opdaterede kommentarer i den celle og ikke hele celleværdien. Den skal kun vise de seneste kommentarer tilføjet i cellen
Denne kommentar blev minimeret af moderatoren på webstedet
Har du fundet ud af det?
Denne kommentar blev minimeret af moderatoren på webstedet
Fantastisk information.
Spørgsmål vedrørende de oplysninger, der kan tilføjes til e-mailen.
Bruger du dit eksempel ovenfor....

Hvis du havde en værdi i F4, hvordan ville du så inkludere F4-værdien i den e-mail, der blev genereret, da D4 blev ændret?
Denne kommentar blev minimeret af moderatoren på webstedet
hvis jeg så skal sende hele rækken?
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg har prøvet ovenstående VBA-kode: Send e-mail, hvis celle i et specificeret område er ændret i Excel. Denne VBA virker for mig undtagen at sende e-mail. Når dataene er ændret i det givne område, genereres der automatisk en e-mail med ændrede celledetaljer. E-mailen sendes dog ikke automatisk til modtageren, og brugeren skal klikke på send-knappen i e-mailen. Det, jeg ser her, er, at e-mailen automatisk skal sendes til modtagerne, når den er genereret. Hjælp mig venligst med at give en kode til dette. Mange tak
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Jimmy Joseph,
Udskift venligst linjen ".Display" med ".Send". Håber jeg kan hjælpe. Tak for din kommentar.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej; er der en måde at ændre tekst vist ved hjælp af information fra andre celler (fra første række og første kolonne)? hvis jeg f.eks. ændrer celle K15, vil jeg inkludere info i meddelelsen om celle A15 og K1? hvad skal jeg ændre i koden? mange tak
Denne kommentar blev minimeret af moderatoren på webstedet
hej Laona. finder du ud af hvordan man kan gøre dette?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej. Hvordan ændrer jeg koden, så en e-mail sendes til en anden e-mailadresse, hvis et andet celleområde redigeres?
Denne kommentar blev minimeret af moderatoren på webstedet
Nogen hjælp til denne anmodning? Jeg har samme problem. Jeg vil tilføje flere e-mailadresser pr. række, men når jeg ændrer en række, ændres hele regnearket. Hvordan kan jeg begrænse ændringerne til kun én række?
Denne kommentar blev minimeret af moderatoren på webstedet
Rediger linie:
1). I koden er A2:E11 det område, du vil sende e-mail baseret på.
og
3). Erstat e-mail-adressen med modtagerens e-mailadresse i linjen .To = "E-mail-adresse".

Virker fint.
Denne kommentar blev minimeret af moderatoren på webstedet
Kan du venligst forklare dette nærmere. Hvordan gentager du koden for at sende til en anden e-mail baseret på et andet område, der ændres. Jeg har prøvet at kopiere og indsætte koden nedenfor og ændre i henhold til din kommentar, men stadig kun det første område ser ud til at udføre kommandoen og skrive e-mailen.
Denne kommentar blev minimeret af moderatoren på webstedet
Er der nogen der har et svar på dette?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, jeg prøvede at sende e-mails på mit ark med en værdi, der er ændret på arket. Hvis status i kolonne H ændres til ="4" skal ordre-id'et til venstre sendes til én bruger. Arket fungerer dynamisk, så jeg har en Range fra D9:D140, hvor ordre-id'er gemmes og statusændringer foretages i samme område på H9:H140. Hvordan kan jeg nå målet for at gøre det og sende ordre-id'et til min kunde, når status er blevet ændret til ="4"?
Denne kommentar blev minimeret af moderatoren på webstedet
Ville det være muligt at vise en anden referencecelle i xMailBody i samme kolonne i stedet for de ændrede celleadresser??
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Sam, Mener du at vælge en referencecelle tilfældigt i den samme kolonne i den ændrede celleadresse? Eller manuelt indtaste en referencecelle i xMailBody-linjen i koden? Det er nemt manuelt at indtaste en referencecelle i koden, bare omslut referencecellen med dobbelte anførselstegn som vist nedenfor: xMailBody = "Cell(er) " & "D3" & ", " & "D8" & _

Denne kommentar blev minimeret af moderatoren på webstedet
Er det muligt at ændre dette, så det kun viser e-mailen, hvis en celle i et område er blevet ændret til at sige "Ja". Vil gerne have, at det ikke gør noget, hvis det er en anden værdi.
Denne kommentar blev minimeret af moderatoren på webstedet
Tak for koden, denne kode virker når jeg indtaster værdien og trykker enter. Men i mit tilfælde fyldes cellen automatisk med formel, og når værdien er nået, åbner den ikke e-mailen, så koden virker ikke i dette tilfælde. Tak på forhånd!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej hakana,
Følgende VBA-kode kan hjælpe dig med at løse problemet. Prøv det. Tak for din feedback.

Private Sub Worksheet_Change(ByVal Target As Range)
'Opdateret af 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ækkevidde
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = Falsk
Indstil xRg = Range("E2:E13")

Indstil xItsRG = Intersect(Target, xRg)
Indstil xDDs = Intersect(Target.DirectDependents, xRg)
Indstil xDs = Intersect(Target.Dependents, xRg)
Hvis ikke (xItsRG er ingenting) så
Indstil xRgSel = xItsRG
xBoolean = Sand
ElseIf Not (xDDs er ingenting) Så
Indstil xRgSel = xDDs
xBoolean = Sand
ElseIf Not (xDs Er Intet) Så
Indstil xRgSel = xDs
xBoolean = Sand
End If


ActiveWorkbook.Save
Hvis xBoolean Så
Debug.Print xRgSel.Address


Indstil xOutApp = CreateObject("Outlook.Application")
Indstil xMailItem = xOutApp.CreateItem(0)
xMailBody = "Cell(er) " & xRgSel.Address(False, False) & _
" i arbejdsarket '" & Me.Name & "' blev ændret på " & _
Format$(Nu, "mm/dd/åååå") & " ved " & Format$(Nu, "tt:mm:ss") & _
" af " & Environ$("brugernavn") & "."

Med xMailItem
.To = "E-mail-adresse"
.Subject = "Arbejdsark ændret i" & ThisWorkbook.FullName
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Skærm
Slut med
Indstil xRgSel = Intet
Indstil xOutApp = Ingenting
Indstil xMailItem = Ingenting
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, jeg har oprettet en lignende kode, men jeg vil gerne *** en betingelse, hvor hvis en celleværdi slettes, vil den ikke sende en e-mail, når den er gemt/lukket. Det vil kun sende en e-mail, når en celleværdi er blevet indtastet. Ved du, hvordan man gør dette? Dette er min kode:

KODE TIL AUTOMATISK EMAIL TIL NOGEN, NÅR EXCEL-ARBEJDSBOGEN OPDATERES

ARKKODE:

Mulighed Eksplicit 'Excel-regneark ændring af hændelsesområde
Privat Sub Worksheet_Change (ByVal Target As Range)
Hvis ikke skærer (mål, rækkevidde("C3:D62")) er intet så
'Target.EntireRow.Interior.ColorIndex = 15
Range("XFD1048576"). Værdi = 15
End If
Hvis ikke skærer (mål, rækkevidde("I3:J21")) er intet så
'Target.EntireRow.Interior.ColorIndex = 15
Range("XFD1048576"). Værdi = 15
End If
End Sub


ARBEJDSBOGSKODE:

Privat underarbejdsbog_BeforeClose(Annuller som boolesk)
If Me.Saved = False Then Me.Save

Dim xOutApp som objekt
Dim xMailItem som objekt
Dim xName Som streng

If Range("XFD1048576").Værdi = 15 Så
On Error Resume Next
Indstil xOutApp = CreateObject("Outlook.Application")
Indstil xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
Med xMailItem
.Til = "e-mail"
.CC = ""
.Subject = "besked"
.Body = "besked!"
.Vedhæftede filer.*** xNavn
.Skærm
'.sende
Slut med
End If
Indstil xMailItem = Ingenting
Indstil xOutApp = Ingenting



End Sub

Privat underarbejdsbog_Åben()
Range("XFD1048576"). Ryd
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hej alle,

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 er da problematisk, når zB 10 Zellen angepasst blev 10 E-mails bedeuten würde. Er du sikker på, at du kan sende en e-mail til dig? Bisher haut der ja die Zellnummer i e-mailen, når du ikke har fundet noget andet.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Esser123,
Følgende VBA-koder kan hjælpe. Efter at have ændret cellerne i det angivne område og gemt projektmappen, vil der poppe en e-mail op med en liste over alle ændrede celler i e-mailens brødtekst, og projektmappen vil også blive indsat som en vedhæftet fil i e-mailen. Følg venligst følgende trin:
1. Åbn regnearket, der indeholder de celler, du vil sende e-mails baseret på, højreklik på arkfanen, og klik Vis kode fra højrekliksmenuen. Kopier derefter følgende kode ind i ark(kode) vinduet.
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. Dobbeltklik i Visual Basic-editoren ThisWorkbook i venstre rude, kopier derefter følgende VBA-kode til Denne arbejdsbog (kode) vindue.
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
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg har brug for hjælp til at udløse en e-mail med en lille ændring. I stedet for en numerisk værdi eller at indtaste oplysningerne i cellen manuelt, vil celler i kolonne B ændres til 'Y' udløst fra en formel i andre celler i den række. Formlen for kolonne B er =HVIS([@[Antal på lager]]>[@[Genbestillingsniveau]],,"Y"), hvilket viser, at lagerbeholdningen er lav på lager og skal genbestilles. Jeg har brug for at udløse en automatiseret e-mail, når en celleværdi ændres i kolonne B til 'Y', så jeg får automatisk besked via e-mail om det lave lager. Jeg har prøvet alt, hvad jeg kan komme i tanke om for at ændre koder, der allerede er leveret, men intet ser ud til at virke for mig... venligst hjælp!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Kathryn F,
Følgende VBA-kode kan hjælpe dig med at løse problemet. Prøv det. Tak for 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
Denne kommentar blev minimeret af moderatoren på webstedet
Hej og tak for denne 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 modificere C2, C3 eller C4 unikke. Cela fonctionne aussi si je modifie C2+C3+C4 ou C2+C3 ou C3+C4 mais cela ne fonctionne pas si j'ai un saut dans la plage. Som eksempel kan du ændre C2 og C4 uden modifikation C3.
Est-ce que quelqu'un pourrait m'aider pour m'indiquer où se trouve mon erreur ?
Merci d'avance.

Privat Sub Worksheet_Change (ByVal Target As Range)
'Opdateret af Extendoffice 20220921
Dim xAddress As String
Dim xDRg, xRgSel, xRg As Range

xAddress = "C2:C4"
Indstil xDRg = Range(xAddress)
Indstil xRgSel = Intersect(Target, xDRg)
Ved fejl GoTo Err1
Hvis ikke xRgSel er ingenting, så
Hvis ThisWorkbook.gChangeRange = "" Så
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
Else
Indstil xRg = Range(ThisWorkbook.gChangeRange)
Indstil 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


-----

Mulighed for eksplicit
Offentlig gChangeRange As String
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Opdateret af Extendoffice 20220921
Dim xRgSel, xRg As Range
Dim xOutApp som objekt
Dim xMailItem som objekt
Dim xMailBody As String
'Ved fejl genoptage næste
Ved fejl GoTo Err1
Indstil xRg = Range(gChangeRange)
Hvis ikke xRg er ingenting, så
Indstil xOutApp = CreateObject("Outlook.Application")
Indstil 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 & "Hærlighed"
Med xMailItem
.To = "x.xxxxxx@xxxx.fr"
.Subject = "Données modifiées" & ThisWorkbook.Name
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Skærm
Slut med
Indstil xRgSel = Intet
Indstil xOutApp = Ingenting
Indstil xMailItem = Ingenting
End If
Err1:
gChangeRange = ""
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg vil gerne sende mailen til 5 personer. Hvilken afgrænsning bruges mellem hver e-mailadresse?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Joe,
Brug venligst semikolon til at adskille e-mailadresserne.
Denne kommentar blev minimeret af moderatoren på webstedet
Her er et andet spørgsmål. Hvis en celle ændres, sender den en e-mail. hvis 3 celler ændres, sender den 3 e-mails. Hvordan stopper du dette, så det kun sender 1 e-mail, når redigeringerne er udført?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Joe,
Antag, at du har angivet området som "A2:E11" i koden. Hvordan kan jeg bekræfte, når hele redigeringerne er udført?
Der er endnu ingen kommentarer her
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder

Følg os

Copyright © 2009 - www.extendoffice.com. | Alle rettigheder forbeholdes. Drevet af ExtendOffice. | | Sitemap
Microsoft og Office-logoet er varemærker eller registrerede varemærker tilhørende Microsoft Corporation i USA og / eller andre lande.
Beskyttet af Sectigo SSL