Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: automatisches EMail wenn Wert überschritten

automatisches EMail wenn Wert überschritten
24.06.2013 10:16:05
Julia
Hi!
ich habe eine Exceltabelle mit Messwerten pro Monat. Zu jedem Messwert gibt es einen Grenzwert, den ich "überwachen" muss. Da ich von diesen Tabellen sehr viele habe dachte ich an eine autmatisierte EMail aus Excel heraus, sobald der Grenzwert erreicht bzw. überschritten wurde (Text muss nix aufregendes sein, nur "Überschreitung Grenzwert bei....").
Leider bekomme ich das überhaupt nicht hin :( hoffe wie immer auf Eure super Hilfe!
Hier eine Beispieldatei: https://www.herber.de/bbs/user/85990.xlsx
GLG und schonmal Danke!
Julia

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 10:34:02
Tino
Hallo,
wie kommen den die Daten in die Tabelle?
Davon ist ja abhängig wann diese automatische Mail versendet werden soll.
Gruß Tino

AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:00:49
Julia
Die Daten werden derzeit händisch in die Tabelle eingegeben (allerdings auf ein anderes Tabellenblatt).ich habe dann einen Übertrag der Werte mit "wechseln", da die Analyseergebnisse oft ein ">" enthalten und dann funktioniert auch keine Rechnung mehr. ich hab es mal im Beispiel eingebaut:
https://www.herber.de/bbs/user/85991.xlsx
ist es möglich, dass immer beim speichern der Datei eine Prüfung läuft und dann eben, wenn ein Grenzwert überschritten ist, ein EMail gesendet wird?
Danke schonmal!!!
GLG

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:14:23
Rudi
Hallo,
und dann eben, wenn ein Grenzwert überschritten ist, ein EMail gesendet wird?
für jede Überschreitung? Also ggfs. 30 Mails?
Welches Mailprogramm?
Gruß
Rudi

AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:16:34
Julia
Hi Rudi!
ja, zur not 30 Emails :) Mailprogramm ist Outlook.
LG

AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:37:40
Tino
Hallo,
habe hier mal was zusammengestellt, vielleicht passt es so.
kommt als Code in DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Call CheckGrenzwerte 
End Sub 
 
kommt als Code in Modul1
Option Explicit 
Dim lvntTaskId As Double 
 
Sub CheckGrenzwerte() 
Dim MaxRow&, strRange$ 
 
Const MailAdresse$ = "Empfänger@Proviter.de" 'Mail-Adresse 
 
With Tabelle1 
    MaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row 
    If MaxRow < 2 Then Exit Sub 
    With .UsedRange 
        With .Columns(.Columns.Count).Offset(0, 1) 
            .FormulaR1C1 = "=IF(AND(COUNTIF(RC3:RC14,"">""&RC2),ROW()>1),TRUE,"""")" 
             
            On Error Resume Next 
                strRange = .SpecialCells(xlCellTypeFormulas, 4).EntireRow.Address(0, 0) 
                .Clear 
            On Error GoTo 0 
        End With 
    End With 
 
    If strRange <> "" Then 
        Call Open_Outlook 
        MailSenden MailAdresse, strRange 
    End If 
End With 
End Sub 
 
Sub MailSenden(strAn$, strRange$) 
Dim MyOutApp As Object, MyMessage As Object 
Set MyOutApp = CreateObject("Outlook.Application") 
Set MyMessage = MyOutApp.CreateItem(0) 
With MyMessage 
    .To = strAn 
    .Subject = "Grenzwert" 
    .body = "Grenzwert überschritten " & ThisWorkbook.Name & vbCr & vbCr & strRange 
    .Importance = 2 'Wichtigkeit hoch 
    .Display 'hier Anzeigen 
    '.Send 'Hier wird die Mail gesendet 
End With 
 
Set MyOutApp = Nothing 
Set MyMessage = Nothing 
End Sub 
 
 
 
Sub Open_Outlook() 
Dim strPath$, oApp As Object 
On Error Resume Next 
Set oApp = GetObject(, "Outlook.Application") 
If Err.Number = 0 Then Exit Sub 
strPath = Application.Parent.Path 
If Right$(strPath, 1) <> "\" Then strPath = strPath & "\" 
lvntTaskId = Shell(strPath & "OUTLOOK.EXE", vbMinimizedFocus) 
End Sub 
 
 
Gruß Tino

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:55:27
Julia
Hi Tino!
das funktioniert einwandfrei! ich denke, die Meldung, dass man die "Erlaubnis erteilen" muss ist notwendig, damit kein Unsinn passiert, oder?
und dann noch eine peinliche frage (aber ich kenn mich mit der Schreibweise von RC nicht gut aus. wie muss ich denn den Code anpassen, damit die "Abfrage" von Zeile 11 bis 30 läuft stimmt
.FormulaR1C1 = "=IF(AND(COUNTIF(RC11:RC30;"">""&RC2),ROW()>1),TRUE,"""")" ?
Muss ich auf etwas achten wenn meine Tabellenblätter anders heißen? Zumindest hat es bei meiner Originaldatei jetzt funktiert, auch wenn das Tabellenblatt nicht "Tabelle1" heisst.
Danke, Danke, Danke!!!

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 12:08:57
Tino
Hallo,
bei RC bedeutet R = Zeile (Row) und C = Spalte (Column), was Du anpassen willst sind die Spalten.
Die Zeilen sollten sich automatisch an die Tabelle anpassen,
dies geschieht im Code durch UsedRange = Benutzter Bereich.
Gruß Tino

AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:58:27
Julia
ich nochmal!
noch eine Sache, die mir gerade aufgefallen ist.
wenn ich jetzt GRenzwertüberschreitungen in vorangegangen Monaten hatte, möchte ich für diese keine weiteren Meldungen erhalten, also immer nur für "neue" Überschreitungen...
ist das anpassbar?
DANKE

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:58:28
Julia
ich nochmal!
noch eine Sache, die mir gerade aufgefallen ist.
wenn ich jetzt GRenzwertüberschreitungen in vorangegangen Monaten hatte, möchte ich für diese keine weiteren Meldungen erhalten, also immer nur für "neue" Überschreitungen...
ist das anpassbar?
DANKE

AW: automatisches EMail wenn Wert überschritten
24.06.2013 12:10:10
Tino
Hallo,
also Du meinst nur für den aktuellen Monat?
Gruß Tino

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 12:27:37
Julia
Genau! Bzw der nächste eingetragene Monat (Manchmal hinkt das ein wenig hinterher)
DANKE
LG

AW: automatisches EMail wenn Wert überschritten
24.06.2013 12:41:55
Tino
Hallo,
hier der Code um nur die aus dem aktuellen Monat zu bekommen bzw.
für den letzten Eintrag in der Zeile.
Die Ausgabe habe ich auch etwas angepasst.
Die Sub durch diese ersetzen.
Sub CheckGrenzwerte()
Dim MaxRow&, n&, strRange$, arAdress
Dim Regex As Object

Const MailAdresse$ = "Empfänger@Proviter.de" 'Mail-Adresse 

With Tabelle1
    MaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    If MaxRow < 2 Then Exit Sub
    With .UsedRange
        With .Columns(.Columns.Count).Offset(0, 1)
            '*** Entsprechende Formel bei FormulaR1C1 einsetzen 
            'für aktuellen Monat 
            '"=IF(AND(COUNTIF(INDEX(RC3:RC14,,MONTH(TODAY())),"">""&RC2),ROW()>1),TRUE,"""")" 
            
            'für den letzten Eintrag 
            '"=IF(AND(COUNTIF(INDEX(RC3:RC14,,MAX(LOOKUP(2,1/(RC3:RC14<>""""),COLUMN(RC3:RC14)))-2),"">""&RC2),ROW()>1),TRUE,"""")" 
            
            .FormulaR1C1 = "=IF(AND(COUNTIF(INDEX(RC3:RC14,,MONTH(TODAY())),"">""&RC2),ROW()>1),TRUE,"""")"
            On Error Resume Next
                strRange = .SpecialCells(xlCellTypeFormulas, 4).EntireRow.Address(0, 0)
                .Clear
            On Error GoTo 0
        End With
    End With

    If strRange <> "" Then
        Call Open_Outlook
        Set Regex = CreateObject("Vbscript.Regexp")
        With Regex
            .Pattern = "[:]{1,1}\d+"
            .MultiLine = True
            .Global = True
            strRange = Replace(.Replace(strRange, ""), ",", ", ")
        End With
        strRange = "In Zeile:" & vbCr & vbCr & strRange
        MailSenden MailAdresse, strRange
    End If
End With

Set Regex = Nothing
End Sub
Gruß Tino

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 12:56:12
Julia
Hi Tino!
PERFEKT!!!!!!!!!!!!
Ganz lieben lieben Dank für die rasche Hilfe!
LG
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Automatische E-Mail-Benachrichtigung bei Grenzwertüberschreitung in Excel


Schritt-für-Schritt-Anleitung

Um eine automatische E-Mail-Benachrichtigung in Excel einzurichten, wenn ein Grenzwert überschritten wird, kannst du den folgenden VBA-Code verwenden. Dieser wird im VBA-Editor platziert.

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle im Projektfenster DieseArbeitsmappe aus.
  3. Füge den folgenden Code in das Fenster ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Call CheckGrenzwerte
End Sub
  1. Füge in ein Modul (z.B. Modul1) den folgenden Code ein:
Sub CheckGrenzwerte()
    Dim MaxRow&, strRange$
    Const MailAdresse$ = "Empfänger@Provider.de" ' Mail-Adresse

    With Tabelle1 ' Tabelle anpassen
        MaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        If MaxRow < 2 Then Exit Sub
        With .UsedRange
            With .Columns(.Columns.Count).Offset(0, 1)
                .FormulaR1C1 = "=IF(AND(COUNTIF(RC3:RC14,"">""&RC2),ROW()>1),TRUE,"""")"
                On Error Resume Next
                strRange = .SpecialCells(xlCellTypeFormulas, 4).EntireRow.Address(0, 0)
                .Clear
                On Error GoTo 0
            End With
        End With

        If strRange <> "" Then
            Call Open_Outlook
            MailSenden MailAdresse, strRange
        End If
    End With
End Sub
  1. Füge den Code zum Versenden von E-Mails hinzu:
Sub MailSenden(strAn$, strRange$)
    Dim MyOutApp As Object, MyMessage As Object
    Set MyOutApp = CreateObject("Outlook.Application")
    Set MyMessage = MyOutApp.CreateItem(0)
    With MyMessage
        .To = strAn
        .Subject = "Grenzwert"
        .Body = "Grenzwert überschritten: " & ThisWorkbook.Name & vbCr & vbCr & strRange
        .Importance = 2 ' Wichtigkeit hoch
        .Display ' hier Anzeigen
        ' .Send ' hier wird die Mail gesendet
    End With
    Set MyOutApp = Nothing
    Set MyMessage = Nothing
End Sub
  1. Speichere die Datei als Makro-fähige Arbeitsmappe (.xlsm).

Häufige Fehler und Lösungen

  • Fehler bei der E-Mail-Versendung: Stelle sicher, dass Outlook korrekt installiert ist und die Sicherheitsfreigaben für Makros aktiviert sind.
  • Formel funktioniert nicht: Überprüfe die Tabellenblattnamen und passe den Code entsprechend an. Der Code funktioniert nur, wenn die Daten in dem angegebenen Tabellenblatt sind.
  • Keine E-Mail-Benachrichtigung: Achte darauf, dass das Makro beim Speichern der Datei ausgeführt wird. Teste das Speichern nach einer Grenzwertüberschreitung.

Alternative Methoden

  • Excel-Benachrichtigung bei Datum: Du kannst eine ähnliche Logik verwenden, um E-Mails zu versenden, wenn ein bestimmtes Datum erreicht wird. Passe die Formel in der CheckGrenzwerte-Subroutine an, um Datumskriterien zu berücksichtigen.
  • Excel-Benachrichtigung bei Änderung: Du kannst das Worksheet_Change-Ereignis verwenden, um Benachrichtigungen bei Änderungen in bestimmten Zellen zu senden.

Praktische Beispiele

Wenn du beispielsweise die Grenzwertüberschreitung für Messwerte in den Zellen A2 bis A30 überwachen möchtest, kannst du den Code anpassen, um spezifische Bereiche zu berücksichtigen:

.FormulaR1C1 = "=IF(AND(COUNTIF(RC2:RC30,"">""&RC1),ROW()>1),TRUE,"""")"

Dies sendet eine E-Mail, wenn ein Wert in diesem Bereich den festgelegten Grenzwert überschreitet.


Tipps für Profis

  • Optimierung des Codes: Verwende Application.ScreenUpdating = False zu Beginn des Makros, um die Leistung zu verbessern und Flackern zu vermeiden.
  • Erweiterte Filter: Implementiere Regex-Filter, um spezifische Bedingungen für das Versenden von E-Mails zu definieren, wie z.B. nur für den aktuellen Monat.
  • Testen: Teste den Code in einer sicheren Umgebung, bevor du ihn in einer produktiven Datei anwendest.

FAQ: Häufige Fragen

1. Kann ich den Code auch ohne Outlook verwenden? Ja, du kannst den Code anpassen, um eine andere E-Mail-Anwendung zu verwenden, benötigst jedoch die entsprechenden API-Zugriffe.

2. Was, wenn ich keine E-Mails erhalten möchte, wenn bereits eine Warnung gesendet wurde? Du kannst eine Logik einfügen, die überprüft, ob eine E-Mail für bereits übertragene Grenzwertüberschreitungen gesendet wurde, bevor eine neue E-Mail erstellt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige