Office: VBA: Wenn der Wert >2 dann soll eine E-Mail versendet werden. Überprüfung von ca. 100 Zeilen.

Helfe beim Thema VBA: Wenn der Wert >2 dann soll eine E-Mail versendet werden. Überprüfung von ca. 100 Zeilen. in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen, ich habe das Problem das wir in unserem Unternehmen eine Bestandsliste unserer Toner in Excel führen. Aktuell bin verusche ich diese... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von S.Kraft, 14. Dezember 2020.

  1. VBA: Wenn der Wert >2 dann soll eine E-Mail versendet werden. Überprüfung von ca. 100 Zeilen.


    Hallo Zusammen,

    ich habe das Problem das wir in unserem Unternehmen eine Bestandsliste unserer Toner in Excel führen. Aktuell bin verusche ich diese übersichtlicher und mit einen Upgrades zu verbessern.
    Sobald sich mal ein Toner dem Ende neigt fände ich es super, wenn Excel eine Mail an unseren Verteiler sendet mit dem Inhalt, dass der Toner XYZ (je nachdem welcher Toner leer ist) folgenden Bestand aufweist und hier nachbestellt werden muss. Die Mail sollte bei einem Bestand von nur noch einem oder keinen Toner versendet werden

    Die Tabelle setzt sich wie folgt zusammen:
    Drucker, Toner (2 Zeilen), Anzahl, Farbe

    Da wir viele Toner haben müssten aktuell ca. 100 Zellen mit diesem Makro überprüft werden.

    Ist sowas denn möglich oder gibt es hier eine andere Möglichkeit?

    Wir verwenden im übrigen Office 2013.

    Kenn mich da leider nicht wirklich aus.

    Habe bisher mal etwas zusammengestellt was allerdings nur für eine Zeile gut ist:

    Sub auto_open()

    Dim OutApp As Object
    Dim EmailText As String
    Dim rZelle As Range

    ' überwacht jetzt als Beispiel die Zelle von D3
    ' in Spalte A (3) steht im Beispiel der Terminbetreff

    For Each rZelle In Range("D3") ' gegebenenfalls anpassen
    If rZelle.Value > 2 Then

    Set OutApp = CreateObject("Outlook.Application")
    With OutApp.CreateItem(0)
    'Empfänger
    .To = "Vorname.Nachname@abc.de" ' Mailadresse anpassen
    'Betreff
    .Subject = "Tonerstand kritisch" & " = " & ThisWorkbook.Worksheets("Logbuch").Range("A3") & " - " & ThisWorkbook.Worksheets("Logbuch").Range("B3") & " - " & ThisWorkbook.Worksheets("Logbuch").Range("C3")
    'Nachricht Cells(rZelle.Row, 3) -> hier wird automatisch der Terminbetreff eingetragen
    .Body = "Der Tonerbestand ist unter den Wert 2 gefallen, bitte bestellen"
    ' Cells(rZelle.Row, 3) -> hier wird automatisch der Terminbetreff eingetragen
    'Lesebestätigung aus
    .ReadReceiptRequested = False
    ' Dateianhang hinzufügen
    '.Attachments.Add Name
    ' Mail Anschauen
    '.Display
    ' Mail Senden
    .Send ' Die Mail sofort senden!
    End With
    Set OutApp = Nothing

    End If
    Next

    End Sub


    Wäre super wenn mir jemand helfen kann

    Liebe Grüße
     
    Zuletzt bearbeitet: 14. Dezember 2020
  2. Lutz Fricke Erfahrener User
    Hallo S.Kraft,

    probier doch mal
    Code:
    For Each rZelle In Range("D3:D100")
    Aber Du solltest Deine Vorgabe nochmal prüfen. Im Betreff schreibst Du >2, im Text<=2 und im Code wieder >2.

    Gruß,
    Lutz
     
    Lutz Fricke, 14. Dezember 2020
    #2
    1 Person gefällt das.
  3. Danke für die schnelle Antwort :)
    Ich hab es nun mal so angepasst wie du es mir mitgeteilt hast. Bekomme allerdings nun zu viele E-Mails :D

    Wo siehst du das mit dem Text <=2? Die Mail soll erst versendet werden wenn bei der Zeile Bestand die 1 oder 0 steht.

    Und dann habe ich noch das Problem mit dem variablen Betreff. Kann der Betreff so eingestellt werden das für jede Mail immer die Zeile ausgewählt wird, welche den Wert von 2 unterschreitet?


    Sub auto_open()

    Dim OutApp As Object
    Dim EmailText As String
    Dim rZelle As Range

    ' überwacht jetzt als Beispiel die Zelle von D3:D100
    ' in Spalte A (3) steht im Beispiel der Terminbetreff

    For Each rZelle In Range("D3:D100") ' gegebenenfalls anpassen
    If rZelle.Value > 2 Then

    Set OutApp = CreateObject("Outlook.Application")
    With OutApp.CreateItem(0)
    'Empfänger
    .To = "Vorname.Nachname@abc.de" ' Mailadresse anpassen
    'Betreff
    .Subject = "Tonerstand kritisch" & " = " & ThisWorkbook.Worksheets("Logbuch").Range("A3") & " - " & ThisWorkbook.Worksheets("Logbuch").Range("B3") & " - " & ThisWorkbook.Worksheets("Logbuch").Range("C3")
    'Nachricht Cells(rZelle.Row, 3) -> hier wird automatisch der Terminbetreff eingetragen
    .Body = "Der Tonerbestand ist unter den Wert 2 gefallen, bitte bestellen"
    ' Cells(rZelle.Row, 3) -> hier wird automatisch der Terminbetreff eingetragen
    'Lesebestätigung aus
    .ReadReceiptRequested = False
    ' Dateianhang hinzufügen
    '.Attachments.Add Name
    ' Mail Anschauen
    '.Display
    ' Mail Senden
    .Send ' Die Mail sofort senden!
    End With
    Set OutApp = Nothing

    End If
    Next

    End Sub


    Gruß Sascha
     
    1 Person gefällt das.
  4. PAN
    Pan User

    VBA: Wenn der Wert >2 dann soll eine E-Mail versendet werden. Überprüfung von ca. 100 Zeilen.

    Hallo Sasha

    Vielleicht eine seltsame Frage:
    Warum machst du das nicht über die Serien-Email-Funktion von Word?

    UX-Bedenken:
    Vor allem bekommt der Einkauf dann nur eine Email pro Zyklus und nicht eine pro Edit.
    Im Worst Case kriegt der Einkauf bei jedem Öffnen der Datei immer wieder eine Mail für
    einen Tonertypus der zwar bestellt aber nicht nicht eingetroffen ist.

    Sicherheits-Bedenken:
    Für auto_open() in einer nicht signierten VBA würde mich die IT erschlagen
    und 80% meiner User würden das enable Macro gar nicht wahrnehmen.

    Komplett anderer Weg:
    Wenn die Menschen die den Toner einsetzen und damit den Bestand reduzieren und die Menschen die das Lager auffüllen, statt den Wert in der Tabelle zu ändern, eine Protokolle-Tabelle schreiben: Kannst du im Hintergrund den aktuellen Lagerbestand berechnen und weil alle historischen Daten vorhanden sind: Vorhersagen darüber machen welcher Toner wie oft benötigt wurde und wer die letzten Änderungen gemacht hat.

    Pan
     
    1 Person gefällt das.
  5. Hallo Pan danke für deine Antwort.

    Auf diese Tabelle greifen nur 2 bzw. 3 Leute zu. Es wird also nicht jeder Mitarbeiter aus dem Unternehmen auf die Datei zugreifen und hier eine Entnahme dokumentieren

    Es wurde so gewünscht, dass diese Excel Datei verwendet wird.

    Ich habe Sie mal angehängt. Evtl. hilft das hier weiter.

    Wie gesagt mit der Programmierung von sowas hab ich wirklcih keine Ahnung :D.

    Wie würde das über die Serienmail Funktion von Word funtkionieren?
     
    1 Person gefällt das.
  6. Lutz Fricke Erfahrener User
    Hallo Sascha,

    Du hast Recht, im Text steht 1 oder 0, also <2.
    Im Makro steht jedoch immer noch
    Code:
    If rZelle.Value > 2 Then
    Damit bekommst Du für alle Toner mit 3 und mehr Bestand eine Mail.

    Der Betreff sollte mit
    Code:
    .Subject = "Tonerstand kritisch" & " = " & ThisWorkbook.Worksheets("Logbuch").Cells(rZelle.row,1) & " - " & ThisWorkbook.Worksheets("Logbuch").Cells(rZelle.row,2)  & " - " & ThisWorkbook.Worksheets("Logbuch").Cells(rZelle.row,3) 
    variabel sein.

    Ansonsten muss ich natürlich Pan beipflichten. AutoOpen ist etwas problematisch. Musst Du auf jeden Fall bei jedem User bei der Einführung kommunizieren.
    Warum eigentlich beim Open? Aus meiner Sicht wäre bei WorkbookClose der richtige Zeitpunkt.
    Und du solltest bedenken, dass Dein Einkauf bei JEDEM Öffnen für JEDEN zu bestellenden Toner eine Mail bekommt. Als Einkauf würde ich Dir das Weihnachtsgeschenk kündigen :-)

    Gruß,
    Lutz
     
    Lutz Fricke, 15. Dezember 2020
    #6
    1 Person gefällt das.
  7. PAN
    Pan User
    Hallo Sascha

    Manchmal muss man den Anwendern geben was sie brauchen und nicht was sie wollen.
    Ich hab dir mal angehängt was ich meine, dann wirst du sehen das die gleichen Informationen nur anders angeordnet sind.

    Pan
     
    1 Person gefällt das.
  8. VBA: Wenn der Wert >2 dann soll eine E-Mail versendet werden. Überprüfung von ca. 100 Zeilen.

    Die Tabelle ist perfekt. Habe es nun so wie es sein soll. Vielen Dank an alle für die schnelle Hilfe :)
     
    1 Person gefällt das.
Thema:

VBA: Wenn der Wert >2 dann soll eine E-Mail versendet werden. Überprüfung von ca. 100 Zeilen.

Die Seite wird geladen...
  1. VBA: Wenn der Wert >2 dann soll eine E-Mail versendet werden. Überprüfung von ca. 100 Zeilen. - Similar Threads - VBA Wert Mail

  2. EXCEL Horizontale Achse schneidet - Wert mit Zellbezug mittels VBA

    in Microsoft Excel Hilfe
    EXCEL Horizontale Achse schneidet - Wert mit Zellbezug mittels VBA: Hallo zusammen, als VBA-Neuling stehe ich vor einer für mich großen Herausforderung:confused:. Für ein Dashboard muss ich verschiedene Diagramme mit spezifischen Achsenwert (Horizontale Achse...
  3. Funktion soll Wert in Variable übergeben (VBA)

    in Microsoft Excel Hilfe
    Funktion soll Wert in Variable übergeben (VBA): Hallo Forum-Gurus, ich bräuchte kurz Eure Hilfe. Anscheinend bin ich auf den Kopf gefallen. Folgende Funktion habe ich programmiert und möchte das Ergebnis nun in einer andere Private Sub...
  4. Per VBA Werte an Userform übergeben

    in Microsoft Excel Hilfe
    Per VBA Werte an Userform übergeben: Hallo zusammen! Ich hatte bereits vor längerer Zeit nach einer Lagerverwaltung gefragt und bin nach und nach selbst auf einen grünen Zweig gekommen - unter anderem durch die Hilfe einiger User....
  5. NACH Filter im Formular Min-Wert mit VBA

    in Microsoft Access Hilfe
    NACH Filter im Formular Min-Wert mit VBA: Hallo Zusammen, ich habe ein Formular basierend auf Tabelle im Formular möchte ich mit VBA den Prozentwert einer Spalte angeben. hierzu benötige ich den Min-Wert dieser Spalte soweit bin ich...
  6. Mehrfachauswahl ohne VBA

    in Microsoft Excel Hilfe
    Mehrfachauswahl ohne VBA: Hallo an alle, ich habe einen Bereich mit Namen und Auswahlkennzeichen: Nüsse - wahr Schokolade - falsch Gemüse - wahr Alkohol - falsch Ich möchte in einer Listbox die Namen als Multiselect...
  7. über vba nur den Wert einer Zelle, ohne Formel und Formatierung übernehmen

    in Microsoft Excel Hilfe
    über vba nur den Wert einer Zelle, ohne Formel und Formatierung übernehmen: Hallo zusammen, ich bin neu hier und auch mit Excel nicht so gut vertraut. Habe mir aus einem Youtube Video eine Anleitung herausgesucht, die soweit auch ganz gut funktioniert. Es geht darum...
  8. VBA: Wenn Zelle X einen bestimmten Wert hat, soll in Zelle Y etwas eingetragen werden

    in Microsoft Excel Hilfe
    VBA: Wenn Zelle X einen bestimmten Wert hat, soll in Zelle Y etwas eingetragen werden: Servus zusammen, Zunächst mal: Freut mich unter Euren Reihen zu sein ;-) Nun zum Problem. Ich möchte über ein Makro eine Funktion bauen, die wie folgt aufgebaut ist: Spalte A hat nur ein...