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

Hoe automatisch e-mail verzenden op basis van celwaarde in Excel?

Stel dat u via Outlook een e-mail naar een bepaalde ontvanger wilt sturen op basis van een opgegeven celwaarde in Excel. Als de waarde van cel D7 in een werkblad bijvoorbeeld groter is dan 200, wordt automatisch een e-mail gemaakt. Dit artikel introduceert een VBA-methode waarmee u dit probleem snel kunt oplossen.

Verzend automatisch e-mail op basis van celwaarde met VBA-code


Verzend automatisch e-mail op basis van celwaarde met VBA-code

Ga als volgt te werk om een ​​e-mail te verzenden op basis van celwaarde in Excel.

1. In het werkblad moet u e-mail verzenden op basis van de celwaarde (hier staat de cel D7), klik met de rechtermuisknop op de bladtab en selecteer Bekijk code vanuit het contextmenu. Zie screenshot:

2. In het opduiken Microsoft Visual Basic voor toepassingen venster, kopieer en plak de onderstaande VBA-code in het bladcodevenster.

VBA-code: stuur e-mail via Outlook op basis van celwaarde in Excel

Dim xRg As Range
'Update by Extendoffice 2018/3/7
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("D7"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 200 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

Opmerkingen:

1). In de VBA-code, D7 en waarde> 200 zijn de cel- en celwaarde waarop u e-mail verzendt op basis van.
2). Wijzig de hoofdtekst van de e-mail in xMailBody regel in de code.
3). Vervang het e-mailadres door het e-mailadres van de ontvanger in de rij .To = "E-mailadres".
4). En specificeer de Cc- en Bcc-ontvangers zoals u nodig hebt in .CC = "" en Bcc = "" secties.
5). Verander ten slotte het e-mailonderwerp in de regel .Subject = "verzenden via celwaardetest".

3. druk de anders + Q toetsen samen om de Microsoft Visual Basic voor toepassingen venster.

Vanaf nu, wanneer de waarde die u invoert in cel D7 groter is dan 200, wordt automatisch een e-mail met gespecificeerde ontvangers en hoofdtekst in Outlook aangemaakt. U kunt op het Verstuur knop om deze e-mail te verzenden. Zie screenshot:

Opmerkingen:

1. De VBA-code werkt alleen als u Outlook als uw e-mailprogramma gebruikt.

2. Als de ingevoerde gegevens in cel D7 een tekstwaarde zijn, wordt het e-mailvenster ook weergegeven.


Verzend eenvoudig e-mail via Outlook op basis van velden van gemaakte mailinglijst in Excel:

De Stuur emails nut van Kutools for Excel helpt gebruikers bij het verzenden van e-mail via Outlook op basis van de gemaakte mailinglijst in Excel.
Download en probeer het nu! (Gratis parcours van 30 dagen)


Gerelateerde artikelen:


De beste tools voor kantoorproductiviteit

Kutools voor Excel lost de meeste van uw problemen op en verhoogt uw productiviteit met 80%

  • visfuik: Snel invoegen complexe formules, grafieken en alles wat je eerder hebt gebruikt; Versleutel cellen met wachtwoord; Maak een mailinglijst en stuur e-mails ...
  • Super Formula-balk (bewerk eenvoudig meerdere regels tekst en formule); Lay-out lezen (gemakkelijk grote aantallen cellen lezen en bewerken); Plakken in gefilterd bereik...
  • Voeg cellen / rijen / kolommen samen zonder gegevens te verliezen; Gespleten cellen inhoud; Combineer dubbele rijen / kolommen... Voorkom dubbele cellen; Vergelijk Ranges...
  • Selecteer Dupliceren of Uniek Rijen; Selecteer lege rijen (alle cellen zijn leeg); Super zoeken en fuzzy zoeken in veel werkboeken; Willekeurige selectie ...
  • Exacte kopie Meerdere cellen zonder de formuleverwijzing te wijzigen; Maak automatisch verwijzingen naar meerdere bladen; Plaats kogels, Selectievakjes en meer ...
  • Extraheer tekst, Tekst toevoegen, Verwijderen op positie, Ruimte verwijderen; Paging-subtotalen maken en afdrukken; Converteren tussen celinhoud en opmerkingen...
  • Super filter (bewaar en pas filterschema's toe op andere bladen); Geavanceerd sorteren per maand / week / dag, frequentie en meer; Speciaal filter door vet, cursief ...
  • Combineer werkmappen en werkbladen; Tabellen samenvoegen op basis van sleutelkolommen; Gegevens splitsen in meerdere bladen; Batch Converteer xls, xlsx en PDF...
  • Meer dan 300 krachtige functies. Ondersteunt Office / Excel 2007-2019 en 365. Ondersteunt alle talen. Eenvoudig te implementeren in uw onderneming of organisatie. Gratis proefperiode van 30 dagen met volledige functies. 60 dagen geld-terug-garantie.
kte tabblad 201905

Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker

  • Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, Publisher, Access, Visio en Project.
  • Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster in plaats van in nieuwe vensters.
  • Verhoogt uw productiviteit met 50% en vermindert elke dag honderden muisklikken!
officetab onderkant
Comments (290)
Nog geen beoordelingen. Beoordeel als eerste!
Deze opmerking is gemaakt door de moderator op de site
Hoe moet de code worden gewijzigd om op een hele reeks cellen van toepassing te zijn?
Deze opmerking is gemaakt door de moderator op de site
Beste Debby,
Probeer onderstaande VBA-code om het probleem op te lossen.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Als Target.Cells.Count > 1 Sub afsluiten
Als (Not Intersect(Target, Range("A1:D4")) niets is) en (Target.Value > 200) dan
Bel Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
xMailBody = "Hallo daar" & vbNewLine & vbNewLine & _
"Dit is regel 1" & vbNewLine & _
"Dit is lijn 2"
On Error Resume Next
Met xOutMail
.To = "Het e-mailadres van uw ontvanger"
.CC = ""
.BCC = ""
.Subject = "verzenden via celwaardetest"
.Body = xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
On Error GoTo 0
Stel xOutMail = Niets in
Stel xOutApp = Niets in
End Sub
Deze opmerking is gemaakt door de moderator op de site
Ik heb problemen om deze code te laten vragen als de waarde in de cel indirect is gewijzigd. Als ik bijvoorbeeld de Sum-vergelijking heb, wordt deze waarde automatisch gewijzigd. Wanneer de vergelijking wordt uitgevoerd en de waarde boven de ingestelde waarde komt om de e-mail te vragen, gebeurt dit niet, tenzij ik het nummer zelf fysiek verander. Is er een manier om de e-mailprompt te maken, zelfs als deze indirect is gewijzigd?
Deze opmerking is gemaakt door de moderator op de site
Beste Jordan,
De volgende VBA-code kan u helpen het probleem op te lossen. Vergeet niet het "E-mailadres" te vervangen door het e-mailadres van de ontvanger in de code. Dank u.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Dim xRgPre als bereik
On Error Resume Next
Als Target.Cells.Count > 1 Sub afsluiten
Stel xRg = Bereik ("D7") in
Stel xRgPre = xRg.Precedenten in
Als xRg.Waarde > 200 Dan
Als Target.Address = xRg.Address Dan
Bel Mail_small_Text_Outlook
ElseIf (Niet xRgPre is niets) en (Intersect(Target, xRgPre).Address = Target.Address) Dan
Bel Mail_small_Text_Outlook
End If
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
xMailBody = "Hallo daar" & vbNewLine & vbNewLine & _
"Dit is regel 1" & vbNewLine & _
"Dit is lijn 2"
On Error Resume Next
Met xOutMail
.To = "E-mailadres"
.CC = ""
.BCC = ""
.Subject = "verzenden via celwaardetest"
.Body = xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
On Error GoTo 0
Stel xOutMail = Niets in
Stel xOutApp = Niets in
End Sub
Deze opmerking is gemaakt door de moderator op de site
Ik heb de voorgestelde code aangepast om te proberen deze voor mijn toepassing te laten werken.
Veranderd xRg = Range("C2:C40") en If xRg.Value = -1.

Het probleem dat ik heb, is dat er altijd een wijziging is in een cel en zolang een van de cellen in mijn bereik = -1 is, wordt Mail_small_Text_Outlook aangeroepen.
Ik probeer alleen te bellen als een cel in mijn bereik indirect is gewijzigd in -1.
Ik vroeg me ook af of en hoe het mogelijk zou zijn om het aan twee criteria te laten voldoen.
Zoals bereik A en bereik B controleren en of ze aan de criteria voldoen, bel de functie.

Bij voorbaat dank voor de hulp. Ik ben nieuw in dit alles, maar als ik dit draadje lees, heb ik ongeveer 90% daar.


Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Dim xRgPre als bereik
On Error Resume Next
Als Target.Cells.Count > 1 Sub afsluiten
Stel xRg = bereik ("C2:C40") in
Stel xRgPre = xRg.Precedenten in
Als xRg.Waarde = -1 Dan
Als Target.Address = xRg.Address Dan
Bel Mail_small_Text_Outlook
ElseIf (Niet xRgPre is niets) en (Intersect(Target, xRgPre).Address = Target.Address) Dan
Bel Mail_small_Text_Outlook
End If
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Ik heb deze code gebruikt met als enige wijziging dat ik deze op een hele kolom heb toegepast [Set xRg = Range ("D4:D13")]. Nu wordt de gebeurtenis geactiveerd wanneer een berekening wordt gemaakt, ongeacht of de klep in kolom D zich onder de doelwaarde bevindt. Enig idee waarom dat is?


Dim Xrg als bereik
Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Dim xRgPre als bereik
On Error Resume Next
Als Target.Cells.Count > 1 Sub afsluiten
Stel Xrg = Bereik ("D4:D13") in
Stel xRgPre = Xrg.Precedents in
Als Xrg.Waarde < 1200 Dan
Als Target.Address = Xrg.Address Dan
Bel Mail_small_Text_Outlook
ElseIf (Niet xRgPre is niets) en (Intersect(Target, xRgPre).Address = Target.Address) Dan
Bel Mail_small_Text_Outlook
End If
End If
End Sub

Sub Mail_small_Text_Outlook()
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
xMailBody = "Hallo" & vbNewLine & _
"Vba testen" _
& vbNieuweLijn & _
"Lijn 2."
On Error Resume Next
Met xOutMail
.Naar = ""
.CC = ""
.BCC = ""
.Subject = "Automatische e-mailtest"
.Body = xMailBody
.Scherm
Eindigt met
On Error GoTo 0
Stel xOutMail = Niets in
Stel xOutApp = Niets in

End Sub


Bedankt.
Deze opmerking is gemaakt door de moderator op de site
Hallo

Ik heb een probleem omdat de e-mailontvanger steeds één voor één moet worden toegevoegd. Geef aan of een lijst met e-mailontvangers aan deze functie kan worden toegevoegd, zodat de functie het e-mailadres selecteert uit de lijst met opgegeven e-mailadressen of de lijst uploadt en de functie de e-mail verzendt, die al is samengesteld naar de gewenste ontvanger.
Deze opmerking is gemaakt door de moderator op de site
Beste Hendrik,
De volgende VBA-code kan u helpen het probleem op te lossen. Plaats het VBA-script in uw werkbladmodule. Wanneer de waarde in de opgegeven cel aan de voorwaarde voldoet, verschijnt er een Kutools for Excel-dialoogvenster, selecteer de cellen die de e-mailadressen van de ontvangers bevatten en klik vervolgens op OK knop. Dan worden e-mails met gespecificeerde ontvangers geopend. Stuur ze als je nodig hebt.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Als Target.Cells.Count > 1 Sub afsluiten
Stel xRg = Bereik ("D7") in
Als xRg = Doel en Doelwaarde > 200 Dan
Bel Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
Dim xRgMsg als bereik
Dim xCell als bereik
Set xRgMsg = Application.InputBox("Selecteer de adrescellen:", "Kutools for Excel", , , , , , 8)
xMailBody = "Hallo daar" & vbNewLine & vbNewLine & _
"Dit is regel 1" & vbNewLine & _
"Dit is lijn 2"
On Error Resume Next
Voor elke xCell In xRgMsg
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
Met xOutMail
.To = xCell.Waarde
.CC = ""
.BCC = ""
.Subject = "verzenden via celwaardetest"
.Body = xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
xOutApp = Niets
xOutMail = Niets
Volgende
On Error GoTo 0
End Sub
Deze opmerking is gemaakt door de moderator op de site
wordt het automatisch per post verzonden, zonder enige handmatige onderbreking?
Deze opmerking is gemaakt door de moderator op de site
Beste Brahma,
Als u de e-mail direct wilt verzenden zonder weergave, vervang dan de regel ".Display" door ".Send" in de bovenstaande VBA-code.
Deze opmerking is gemaakt door de moderator op de site
Hallo, ik heb hetzelfde script geplaatst, maar het werkt niet, help me alsjeblieft in het 1e deel

Dim xRg als bereik

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Als Target.Cells.Count > 1 Sub afsluiten
Stel xRg = Bereik ("D7") in
Als xRg = Doel en Doelwaarde = 200 Dan
Bel Mail_small_Text_Outlook
End If

End Sub
Deze opmerking is gemaakt door de moderator op de site
Beste basilicum,
Is er een waarschuwing bij het uitvoeren van de code?
Deze opmerking is gemaakt door de moderator op de site
Hallo, hoe zou je deze code wijzigen om te controleren of een groep cellen de tekenreeks "Geen overeenkomst" heeft en een e-mail sturen als dat zo is.
Deze opmerking is gemaakt door de moderator op de site
Lieve Jose,
Probeer onderstaande VBA-code. Wanneer u de code uitvoert, verschijnt er een dialoogvenster, selecteer het bereik dat u wilt controleren op tekenreeks en klik op de OK knop. als de string niet bestaat, krijgt u een promptdialoogvenster. Als de tekenreeks in het bereik bestaat, wordt een e-mail met de opgegeven ontvanger, onderwerp en hoofdtekst weergegeven.

Sub VerzendenE-mail()
Dim ik zo lang
Dim J As Long
Dim xRg als bereik
Dim xArr
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
Dim xFlag As Boolean
On Error Resume Next
Set xRg = Application.InputBox ("Selecteer bereik", "Kutools for Excel", Selection.Address, , , , , 8)
Als xRg niets is, sluit dan Sub af
xArr = xRg.Waarde
xFlag = False
Voor I = 1 Naar UBound(xArr)
Voor J = 1 Naar UBound(xArr, 2)
Als xArr(I, J) = "Geen overeenkomst" dan
xFlag = Waar
End If
Volgende
Volgende
Als xFlag Dan
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
xMailBody = "Hallo daar" & vbNewLine & vbNewLine & _
"Dit is regel 1" & vbNewLine & _
"Dit is lijn 2"
Met xOutMail
.To = "E-mailadres"
.CC = ""
.BCC = ""
.Onderwerp = "Overeenkomst"
.Body = xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
Anders
MsgBox "Geen overeenkomende waarde gevonden", vbInformation, "KuTools for Excel"
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Hoe kan ik deze code wijzigen voor het verzenden van leerlingcijfers naar ouders. Waarbij kolom A het cijfer is en kolom B het bovenliggende e-mailadres. Ik wil voor elke leerling een e-mail invullen met een F als cijfer.
Deze opmerking is gemaakt door de moderator op de site
Beste Frank,
De onderstaande VBA-code kan u helpen het probleem op te lossen. Dank u.

Sub Mail_small_Text_Outlook()
Dim xRg als bereik
Dim ik zo lang
Dim xRows zo lang
Dim xVal As String
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
On Error Resume Next
Set xRg = Application.InputBox ("Selecteer de cijferkolom en de e-mailkolom (twee kolommen)", "Kutools for Excel", Selection.Address, , , , , 8)
Als xRg niets is, sluit dan Sub af
xRijen = xRg.Rijen.Aantal
Stel xRg = xRg(2) in
Voor I = 1 Tot xRijen
xVal = xRg.Offset(I, -1).Tekst
Als xVal = "F" Dan
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
xMailBody = "Hallo daar" & vbNewLine & vbNewLine & _
"Dit is het cijfer van uw kind " & xRg.Offset(I, -1).Text
Met xOutMail
.to = xRg.Offset(I, 0).Tekst
.Subject = "verzenden via celwaardetest"
.Body = xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
On Error GoTo 0
Stel xOutMail = Niets in
Stel xOutApp = Niets in
End If
Volgende
End Sub
Deze opmerking is gemaakt door de moderator op de site
Ik heb al een lijst met e-mailadressen in een Excel-bestand, hoe kan ik de code wijzigen om automatisch het e-mailadres van de persoon te kiezen als zijn cel D7 >200 is?
Deze opmerking is gemaakt door de moderator op de site
Good Day,
De volgende VBA-code kan u helpen het probleem op te lossen. Plaats het VBA-script in uw werkbladmodule. Wanneer de waarde in de opgegeven cel aan de voorwaarde voldoet, verschijnt er een Kutools for Excel-dialoogvenster, selecteer de cellen die de e-mailadressen van de ontvangers bevatten en klik vervolgens op OK knop. Dan worden e-mails met gespecificeerde ontvangers geopend. Stuur ze als je nodig hebt.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Als Target.Cells.Count > 1 Sub afsluiten
Stel xRg = Bereik ("D7") in
Als xRg = Doel en Doelwaarde > 200 Dan
Bel Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
Dim xRgMsg als bereik
Dim xCell als bereik
Set xRgMsg = Application.InputBox("Selecteer de adrescellen:", "Kutools for Excel", , , , , , 8)
xMailBody = "Hallo daar" & vbNewLine & vbNewLine & _
"Dit is regel 1" & vbNewLine & _
"Dit is lijn 2"
On Error Resume Next
Voor elke xCell In xRgMsg
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
Met xOutMail
.To = xCell.Waarde
.CC = ""
.BCC = ""
.Subject = "verzenden via celwaardetest"
.Body = xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
xOutApp = Niets
xOutMail = Niets
Volgende
On Error GoTo 0
End Sub
Deze opmerking is gemaakt door de moderator op de site
Ik heb problemen met het verzenden van e-mail via Outlook. Ik krijg de foutmelding "Een programma probeert namens u een e-mail te verzenden. Als dit onverwachts is, weiger dan en controleer of uw antivirussoftware up-to-date is"
Help alstublieft, want ik kan het niet automatiseren.
Deze opmerking is gemaakt door de moderator op de site
Sorry Mayan,
De code werkt in mijn geval goed. Het lijkt erop dat er iets over de functie "verzenden namens" is geconfigureerd in uw Outlook. Controleer het even.
Deze opmerking is gemaakt door de moderator op de site
Hallo, welke code zou ik gebruiken als ik een e-mail probeer te sturen naar een manager die een lijst heeft van het fruit met een hoeveelheid> 200 eenmaal per maand (op basis van uw voorbeeld) of binnenkort verloopt (op basis van datums)
Deze opmerking is gemaakt door de moderator op de site
Goede dag
Mogelijk is de methode in dit artikel "Hoe e-mail verzenden als de vervaldatum in Excel is gehaald?" kan jou helpen.
Volg deze link: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
Deze opmerking is gemaakt door de moderator op de site
Hoe kan ik de code bewerken om een ​​e-mail te verzenden op basis van een datum in de cel. Ik heb bijvoorbeeld elke 15 maanden een document nodig dat moet worden beoordeeld en ik wil na 12 maanden een e-mail sturen naar een e-mailadres waarin staat dat het document moet worden beoordeeld. Ik heb nu de mogelijkheid om automatisch een e-mail te verzenden door .Display te wijzigen in .Send en het werkt prima zoals het is geschreven, maar wat moet ik veranderen om een ​​datumfunctie te gebruiken in plaats van een geheel getal??
Deze opmerking is gemaakt door de moderator op de site
Hoe kun je Multiple Range toevoegen aan "Set xRg = Range("D7")". Ik wil het bewerken en Range("D7:F7") toevoegen. Ik krijg echter de foutmelding Run Time Error 13, Type Mismatch en het brengt me naar If xRg = Target And Target.Value> 2 Then.


Hoe kan ik dit probleem oplossen?
Deze opmerking is gemaakt door de moderator op de site
Good Day,
Probeer onderstaande VBA-code om het probleem op te lossen.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Als Target.Cells.Count > 1 Sub afsluiten
Als (Not Intersect(Target, Range("D7:F7")) niets is) en (Target.Value > 200) dan
Bel Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
xMailBody = "Hallo daar" & vbNewLine & vbNewLine & _
"Dit is regel 1" & vbNewLine & _
"Dit is lijn 2"
On Error Resume Next
Met xOutMail
.To = "Het e-mailadres van uw ontvanger"
.CC = ""
.BCC = ""
.Subject = "verzenden via celwaardetest"
.Body = xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
On Error GoTo 0
Stel xOutMail = Niets in
Stel xOutApp = Niets in
End Sub
Deze opmerking is gemaakt door de moderator op de site
werkte perfect.. Dank je.. :) :)
Deze opmerking is gemaakt door de moderator op de site
Het werkt niet voor mij omdat de waarde in D7 het resultaat is van een formule. Wat als cel D7 een formule bevat, bijvoorbeeld D7 =2*120? Het voldoet nog steeds aan de voorwaarde maar er gebeurt niets. Help alstublieft
Deze opmerking is gemaakt door de moderator op de site
hoe te voorkomen dat de code wordt uitgevoerd, dwz de e-mail niet vragen wanneer niet aan de voorwaarde wordt voldaan?

zelfs wanneer D7 < 200, krijg ik nog steeds de e-mail.
Deze opmerking is gemaakt door de moderator op de site
Good Day,
De code wordt bijgewerkt in de post met het probleem opgelost. Bedankt voor je reactie.
Deze opmerking is gemaakt door de moderator op de site
Hi

Heel erg bedankt voor het plaatsen van deze VBA-code en instructies. Toen ik het vond, had ik het gevoel dat ik de lotto had gewonnen. Ik zit echter met iets vast, dus ik hoop dat je kunt helpen (ik ben nieuw in VBA, heb alleen een heel basiskennis).

Ik heb de code gekopieerd en de cel- en celwaarde gewijzigd om uit een bereik te kiezen als aan een criterium wordt voldaan. Ik heb het geprobeerd en getest en het werkt en ik ontving een e-mail naar Outlook op basis van de criteria.

1) Ik kan er echter niet achter komen hoe ik de VBA-code automatisch kan laten werken wanneer ik het Excel-werkblad open, in plaats van op de VBA-toepassing te moeten klikken en uitvoeren te selecteren. Kunt u aangeven of er een extra prompt is om in de VBA-code hierboven te typen die dit zal doen of moet dit afzonderlijk worden gedaan.

2) Is er ook een manier om de VBA-code te krijgen om een ​​e-mail naar een persoon te sturen als de vervaldatum ja is voor een bepaald item, zoals in het onderstaande voorbeeld.
e-mail verborgen kolom
Naam en voornaam

Procedure
Procedure nr.1 vervaldatum ja
Procedurenr. 2 vervaldatum nr

Ik zou veel mensen in de spreadsheet hebben (horizontaal op een rij overgaan) en 'Ja' zou kunnen worden gemarkeerd voor verschillende achterstallige procedures (verticaal vermeld in kolom A. Is er een manier om een ​​VBA-code te maken die voor zoiets als dit wordt uitgevoerd - indien 'Ja' voor 'Persoon 1', e-mail dan 'persoon 1' met 'procedure nr. #' (of nummers) en vervaldatum(s) In staat zijn om in de e-mail alle procedures en hun daaropvolgende vervaldata op te sommen.

Ik zou het niet erg vinden als ik voor elke persoon een aparte VBA-code moest instellen, zolang het maar een e-mail stuurde met alle documenten die achterstallig waren voor die persoon en de vervaldatums.

Ik hoop dat je kan helpen
Deze opmerking is gemaakt door de moderator op de site
Beste Ann,
Probeer de onderstaande VBA-code eens. Bedankt voor je reactie.

Sub Mail_small_Text_Outlook()
Dim xRg als bereik
Dim xCell als bereik
Dim ik zo lang
Dim xRows zo lang
Dim xCols zo lang
Dim xVal As String
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
On Error Resume Next
Set xRg = Application.InputBox ("Selecteer het bereik bevat de celwaarde die u e-mails wilt verzenden op basis van:", "Kutools for Excel", Selection.Address, , , , , 8)
Als xRg niets is, sluit dan Sub af
xRijen = xRg.Rijen.Aantal
xKollen = xRg.Kolommen.Aantal
Voor I = 1 Tot xRijen
Stel xCel = xRg(I, xKol) in
Als xCell.Value = "Ja" Dan
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
xMailBody = "Hallo daar" & vbNewLine & vbNewLine & _
"Dit is uw informatie: " & vbNewLine & xCell.Offset(0, -1).Text & vbNewLine & xCell.Offset(0, -2).Text
Met xOutMail
.Naar = xCell.Offset(0, -4).Tekst
.Subject = "verzenden via celwaardetest"
.Body = xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
On Error GoTo 0
Stel xOutMail = Niets in
Stel xOutApp = Niets in
End If
Volgende
End Sub
Deze opmerking is gemaakt door de moderator op de site
Kristal,

Dit vervangt de volgende code:

Sub-e-mail()

Dim xRg als bereik

Dim xRgElk als bereik

Dim xEmail_Subject, xEmail_Send_Form,;etc.
Deze opmerking is gemaakt door de moderator op de site
Waar plaatsen we deze code precies?
Deze opmerking is gemaakt door de moderator op de site
Goede dag,
U moet de code in het codevenster van het werkblad plaatsen.
Open het Microsoft Visual Basic for Applications-venster, dubbelklik op de bladnaam in het linkerdeelvenster om de code-editor te openen.
Deze opmerking is gemaakt door de moderator op de site
Hey daar!


Ik heb momenteel een beetje moeite met de codering (nieuw hieraan - heb misschien meer afgebeten dan ik kan kauwen)


Ik heb momenteel een spreadsheet met het volgende dat ik hulp nodig heb bij het automatiseren en verzenden van e-mail voor fouten bij onze eigendommen voor ons bedrijf


Ik heb momenteel een code nodig die de volgende gegevens gebruikt:


1) Een adres en het probleem ( 2 "algemene" cellen die zijn samengevoegd via ((In cel D1)) " = =CONCAT(B1," "C1,) "
Het adres in B1 zal altijd hetzelfde zijn (min of meer)
Terwijl C1 altijd zal veranderen, afhankelijk van de storing in het pand.


2) Een e-mail die via hetzelfde e-mailadres moet worden verzonden (kan ik $E$1 gebruiken of ik moet bijvoorbeeld E1 - E1 gebruiken) of kan ik gewoon "TheEmailAdress@.co.uk" invoeren in de coderegel


3) De hoofdtekst van de e-mail moet op dezelfde manier worden ingevuld als bij punt 1) ...... ((in cel F1)) " =CONCAT(G1," ",H1)
Deze zullen constant veranderen omdat ze het bedrijf vertegenwoordigen (G1) en wat ze doen, repareren, citeren ect (H1)

4) De trigger om de e-mail te verzenden, ik zou de nummer 7 zijn, het blad wordt dagelijks bijgewerkt (7 dagen in een week)
als zodanig heb ik de trigger nodig om de e-mail op dag 7 te verzenden, maar niet constant zoals op dag 8, 9, 10+ ect. en niet eerder zoals 1-6, dit zou in A4 zijn: A 100+ (omdat we voortdurend uitbreiden)


4) Ik heb kleine fragmenten gebruikt van andere gebruikers die vermeldden over het gebruik van een lijst voor de trigger om de e-mail te verzenden, maar ik wist niet zeker of het 100% correct was, maar ik zou het nodig hebben om door alle Collum A... A4: A100
en als er 47 cellen zijn die alleen " 7 " bevatten, worden 47 e-mails verzonden


Heel erg bedankt voor het lezen en ik hoop dat je kunt helpen :)
Deze opmerking is gemaakt door de moderator op de site
Beste Martijn,
Sorry kan hier niet mee helpen.
U kunt uw vraag op ons forum plaatsen: https://www.extendoffice.com/forum.html om meer Excel-ondersteuning te krijgen van onze technische staf.
Bedankt voor je reactie.

Met vriendelijke groet,
Kristal
Deze opmerking is gemaakt door de moderator op de site
Hoi,


Wat als ik de e-mail wilde verzenden op basis van het woord 'voltooid' dat is toegevoegd aan kolom L?
Deze opmerking is gemaakt door de moderator op de site
Beste Jesse,
De volgende VBA-code kan u helpen het probleem op te lossen. Bedankt voor je reactie.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Als Target.Cells.Count > 1 Sub afsluiten
Als (Not Intersect(Target, Range("L:L")) Is Nothing) en (Target.Value = "completed") Dan
Bel Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
xMailBody = "Hallo daar" & vbNewLine & vbNewLine & _
"Dit is regel 1" & vbNewLine & _
"Dit is lijn 2"
On Error Resume Next
Met xOutMail
.To = "Het e-mailadres van uw ontvanger"
.CC = ""
.BCC = ""
.Subject = "verzenden via celwaardetest"
.Body = xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
On Error GoTo 0
Stel xOutMail = Niets in
Stel xOutApp = Niets in
End Sub
Deze opmerking is gemaakt door de moderator op de site
Hoi,
Ik wil dat Outlook alleen verschijnt als de gegevens die ik in het bereik ("D7:F7") heb geplakt, minimaal 1 nul of een blanco hebben.
Ik heb de regel 'If Target.Cells.Count> 1 Then Exit Sub' verwijderd en nu wordt Outlook altijd gestart wanneer ik een groep waarden in cellen D7:F7 plak.

Helpen.
Deze opmerking is gemaakt door de moderator op de site
Beste Jan,
Het volgende script kan u helpen het probleem op te lossen. Bedankt voor je reactie.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
On Error Resume Next
If Target.Address = Range("D7:F7").Adres Dan
Met toepassing.Werkbladfunctie
If .CountIf(Doel, "") > 0 Of .CountIf(Doel, 0) > 0 Dan
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
Met xOutMail
.To = "E-mailadres"
.CC = ""
.BCC = ""
.Subject = "verzenden via celwaardetest"
.Body = "Hallo daar"
.Weergeven 'of gebruik .Verzenden'
Eindigt met
On Error GoTo 0
Stel xOutMail = Niets in
Stel xOutApp = Niets in
End If
Eindigt met
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Dus ik heb je bewerking gebruikt om een ​​celbereik op te nemen, maar (als we het werkbladvoorbeeld gebruiken) vroeg ik me af hoe ik het type fruit, de datum en de hoeveelheid in de HTML-e-mail van het werkblad kon toevoegen als ze aan de criteria voldoen om een e-mail laten genereren. Dus het zou zeggen

"Hallo daar,"

Fruitnaam uit cel "Moet in backorder worden gezet omdat vanaf besteldatum: " besteldatum uit cel "we dit bedrag hebben:" aantal uit cel.
Deze opmerking is gemaakt door de moderator op de site
Hallo Noemi,
Probeer deze VBA-script.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Dim xRg als bereik
Dim I, J, K zo lang
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
On Error Resume Next
Als Target.Address = Range ("D7").Adres Dan
Met toepassing.Werkbladfunctie
If IsNumeric (Target.Value) en Target.Value > 200 dan
Set xRg = Application.InputBox ("Selecteer het celbereik dat u in de hoofdtekst van de e-mail wilt weergeven:", "KuTools for Excel", Selection.Address, , , , , 8)
Als xRg niets is, sluit dan Sub af
Voor I = 1 Tot xRg.Rows.Count
Voor J = 1 Tot xRg.Rijen(I).Kolommen.Aantal
Voor K = 1 Tot xRg.Rijen(I).Kolommen(J).Tellen
xMailBody = xMailBody & " " & xRg.Rows(I).Columns(J).Cells(K).Text
Volgende
Volgende
xMailBody = xMailBody & vbNewLine
Volgende
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
Met xOutMail
.To = "E-mailadres"
.CC = ""
.BCC = ""
.Subject = "verzenden via celwaardetest"
.Body = "Hallo daar" & vbNewLine & xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
On Error GoTo 0
Stel xOutMail = Niets in
Stel xOutApp = Niets in
End If
Eindigt met
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
hallo kristal
bedankt voor uw codes, stuur indien mogelijk de codes voor onderstaande details

als we 8 tot 9 coloums hebben die verschillende soorten vervaldatums gebruiken, zoals de vervaldatum van het paspoort, de vervaldatum van het rijbewijs, de vervaldatum van de voertuigregistratie, de vervaldatum van de poortpas en meer, enz., en mag een e-mailwaarschuwing naar slechts 5 bepaalde personen worden verzonden.

zoals ons datumblad is met meer dan 300 werknemers, verlopen en vervaldatum met binnen 15 dagen in rode kleur en e-mailwaarschuwing moet worden verzonden.

doe het nodige

dank bij voorbaat
Deze opmerking is gemaakt door de moderator op de site
Hallo,
We hebben een artikel geplaatst "Hoe e-mail verzenden als de vervaldatum in Excel is gehaald?"
In dit artikel kunt u zien of er antwoorden zijn. Volg deze link om het artikel te openen: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
Dank je.
Deze opmerking is gemaakt door de moderator op de site
Hallo- Als ik een e-mail van een lijst naar een e-mail wilde sturen in plaats van de echte e-mailaddy in de code te plaatsen, is dat dan mogelijk? Met dank
Deze opmerking is gemaakt door de moderator op de site
Hallo,
Probeer de onderstaande VBA-code. Wanneer de opgegeven cel aan de voorwaarde voldoet, verschijnt er een dialoogvenster. Selecteer de cel die het e-mailadres bevat waarnaar u een e-mail wilt sturen. Hoop dat het kan helpen. Dank u.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
Als Target.Cells.Count > 1 Sub afsluiten
Stel xRg = Bereik ("D7") in
Als xRg = Doel en Doelwaarde > 200 Dan
Bel Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp als object
Dim xOutMail als object
Dim xMailBody As String
Dim xRgMsg als bereik
Dim xCell als bereik
Set xRgMsg = Application.InputBox("Selecteer de adrescellen:", "Kutools for Excel", , , , , , 8)
xMailBody = "Hallo daar" & vbNewLine & vbNewLine & _
"Dit is regel 1" & vbNewLine & _
"Dit is lijn 2"
On Error Resume Next
Voor elke xCell In xRgMsg
Stel xOutApp = CreateObject ("Outlook.Application") in
Stel xOutMail = xOutApp.CreateItem(0) in
Met xOutMail
.To = xCell.Waarde
.CC = ""
.BCC = ""
.Subject = "verzenden via celwaardetest"
.Body = xMailBody
.Weergeven 'of gebruik .Verzenden'
Eindigt met
xOutApp = Niets
xOutMail = Niets
Volgende
On Error GoTo 0
End Sub
Er zijn nog geen reacties geplaatst
Laad meer
Laat uw commentaar
Posten als gast
×
Beoordeel dit bericht:
0   Personages
Voorgestelde locaties