Excel Messagebox mit Auswertung?
Hallo,
Ich habe ein Problem bei Excel Vba und hoffe ihr könnt mir weiterhelfen.
Und zwar habe ich eine größere Excel Datei wo täglich neue Daten automatisch hinzukommen.
Beim Öffnen der Excel wird automatisch die Seite Info geöffnet mit den neuesten Informationen.
Nun möchte ich aber folgendes:
Auf der Seite Fehler werden täglich die fehlerhaften Produkte eingetragen und zwar in den spalten, Lackfehler, rost, gebrochen, defekt.
In der spalten Artikelnummer wird natürlich die Artikelnummer eingetragen und in den oben erwähnten spalten die Anzahl der Fehler pro Artikelnummer.
Also zb. Artikelnummer: 123455 hat bei spalten rost 4 und bei Spalte lackfehler 5
Und nun kommt meine frage:
Ich möchte das beim Öffnen der Excel eine Messagebox erscheint wo die Artikelnummern der letzten 5 Tage mit Anzahl der jeweiligen Fehler automatisch angezeigt wird.
Kann mir hier jemand den Vba Code dafür sagen?
Danke im Vorhinein.
2 Antworten
Kann mir hier jemand den Vba Code dafür sagen?
Anhand dessen, was Du hier über die Tabelle bekannt gibst nicht.
Global gesehen scheinst Du aber Excel für Dinge zu nutzen, für die man Access nutzen sollte.
Dort wäre auch eine einfache Abfrage und Ausgabe über die gewünschten Werte absolut kein Problem.
Jein, ich nutze eine access als riesen datenpool für mehrere Bereiche.
Die Excel ist speziell für 1en Bereich sozusagen ausgegliedert, bzw. Es werden die Daten von der Access in die Excel importiert da da viele Kollegen einen grossen Bogen um access machen sich jedoch mit Excel auskennen
Also,
Im "Workbook_Open" Event und dem heutigen Datum (Datetime.Date)
über die Tabelle mit den Fehlereintragungen iterieren.
Letzte Zeile könnte an dieser Stelle sein.
Dim cReihe as long
Dim msgTxt as string
Dim AnzahlFehler as long
AnzahlFehler = 0
cReihe = Worksheets("Reparaturen").UsedRange.Rows.Count 'Nur dann die UNTERSTE Zeile mit Daten, wenn KEINE "Verschmutzung" in tieferen Zeilen vorhanden ist.
Do while Worksheets("Reparaturen").Cells(cReihe, SpalteMitDemDatum).Value >= (Datetime.Date-5) AND cReihe >= 1
AnzahlFehler = AnzahlFehler +Worksheets("Reparaturen").Cells(cReihe, SpalteMitFehlerAnzahl).Value
msgTxt = msgTxt & Worksheets("Reparaturen").Cells(cReihe, SpalteMitFehlerText).Value & vbCrLf
cReihe = cReihe -1
loop
MsgBox "Fehler der letzten 5 Tage:" & vbCrLf & msgTxt & " " & AnzahlFehler,vbInformation,"Tool Help"
Ein paar Kleinigkeiten gibt es noch zu tun.
Ich habe es mal komplettiert, so dass es zumindest in einer "Tabelle1" die es wohl immer gibt direkt läuft: Code in "DieseArbeitsMappe" einfügen.
Private Sub Workbook_Open()
Dim cReihe As Long
Dim msgTxt As String
Dim SpalteMitDemDatum As Integer
Dim SpalteMitFehlerText As Integer
Dim AnzahlFehler As Long
AnzahlFehler = 0
cReihe = Worksheets("Tabelle1").UsedRange.Rows.Count 'Nur dann die UNTERSTE Zeile mit Daten, wenn KEINE "Verschmutzung" in tieferen Zeilen vorhanden ist.
SpalteMitDemDatum = 1
SpalteMitFehlerText = 1
Do While Worksheets("Tabelle1").Cells(cReihe, SpalteMitDemDatum).Value >= (DateTime.Date - 5) And cReihe >= 1
AnzahlFehler = AnzahlFehler + Worksheets("Reparaturen").Cells(cReihe, SpalteMitFehlerAnzahl).Value
msgTxt = msgTxt & Worksheets("Tabelle1").Cells(cReihe, SpalteMitFehlerText).Value & vbCrLf
cReihe = cReihe - 1
Loop
MsgBox "Fehler der letzten 5 Tage:" & vbCrLf & msgTxt & " " & AnzahlFehler, vbInformation, "Tool Help"
End Sub
Entweder bin ich blöd aber ich bekomme es mit dem Code nicht zum laufen:(