Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Gleiche Werte suchen und ausgeben
04.04.2020 11:02:11
Wolfgang
Guten Tag,
ich habe in einer Arbeitsmappe unter anderem ein Tabellenblatt "Kundenbestellungen" mit 11 Spalten.
In Spalte 1 steht der Name des Kunden, in Spalte 4 die Artikelnummer und in Spalte 5 die Artikelbezeichnung.
In Spalte 9 steht das Lieferdatum. Die anderen Spalten beinhalten noch weitere Daten zur Bestellung wie Bestellnummer, Preise usw. und sind für mein Vorhaben nicht relevant.
Ich möchte das mir beim Öffnen der Arbeitsmappe (Das erste Tabellenblatt heisst "Startseite") alle Bestellungen mit heutigem Liefertermin in einer Messagebox angezeigt werden.
Nach langem hin und herprobieren habe ich folgenden Code zusammengebastelt, der zwar die erste Bestellung mit heutigem Datum findet und ausgibt, aber die weiteren natürlich nicht. Ich habe leider keine Erfahrungen mit Do und Loop. Und was ich darüber bisher gefunden habe hat mir auch nicht wirklich weitergeholfen.
Schön wäre es wenn die gefundenen Daten mit samt den ganzen dazugehörigen Zeilen auch direkt in ein anderes Tabellenblatt kopiert werden könnten, dann könnte ich damit vielleicht auch noch was anderes machen. Zum Beispiel gleich die Rechnung schreiben, o. ä.
Falls mir hier jemand weiterhelfen könnte wäre ich sehr dankbar.
Mein Code bisher:
Private Sub Workbook_Open()
'Bestellungen mit heutigem Datum finden und daran erinnern
Application.ScreenUpdating = False
Application.DisplayAlerts = True
Sheets("Startseite").Range("M7") = ""    ' diese Zellen habe ich nur als
Sheets("Startseite").Range("M8") = ""     'Platzhalter verwendet.
Sheets("Startseite").Range("M9") = ""
Dim rng As Range
Dim Datum As Long    ' Das Datum in Spalte 9 ist übrigens als Zahl formatiert
Datum = Date
Set rng = Worksheets("Kundenbestellung").Range("I:I").Find(Datum)
If rng Is Nothing Then
GoTo Keine_Lieferung
Else
rng.Columns(1 - 8).Copy
Sheets("Startseite").Paste Destination:=Sheets("Startseite").Range("M7")
rng.Columns(1 - 4).Copy    'Dito Spalte 4
Sheets("Startseite").Paste Destination:=Sheets("Startseite").Range("M8")
rng.Columns(1 - 5).Copy    'Dito Spalte 5
Sheets("Startseite").Paste Destination:=Sheets("Startseite").Range("M9")
Kunde = Sheets("Startseite").Range("M7")
Artikelnummer = Sheets("Startseite").Range("M8")
Bezeichnung = Sheets("Startseite").Range("M9")
Sheets("Kundenbestellung").Visible = False
Application.CutCopyMode = False
Sheets("Startseite").Activate
Application.ScreenUpdating = True
MsgBox "Heute Ausliefern:" & Chr(10) & Kunde & Chr(10) & Artikelnummer & Chr(10) & Bezeichnung
End If
Exit Sub
Keine_Lieferung:
Sheets("Kundenbestellung").Visible = False
Application.CutCopyMode = False
Sheets("Startseite").Activate
Application.ScreenUpdating = True
MsgBox "Heute keine Lieferungen!"
Exit Sub
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gleiche Werte suchen und ausgeben
04.04.2020 12:35:02
JoWE
Hallo Wolfgang,
hast Du die in ROT vermerkten Hinweise "Neuer Beitrag" überlesen?
"Beachte bitte, dass das Hochladen einer Beispielarbeitsmappe den Antwortern das Helfen erleichtert. Entferne aus dieser Arbeitsmappe alle sensiblen Daten!"
Gruß
Jochen
AW: Gleiche Werte suchen und ausgeben
05.04.2020 12:35:26
JoWE
Hallo Wolfgang,
hier Dein leicht verändertes Makro:
Sub Schaltfläche1_KlickenSieAuf()
Application.ScreenUpdating = False
Application.DisplayAlerts = True
Dim rng As Range
Dim loDeinWert As Long
Dim ze As Long, ZielZeile As Long
Dim Lieferliste As String
loDeinWert = Date 'gesuchter Wert
For ze = 2 To Worksheets("Kundenbestellung").Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets("Kundenbestellung")
If .Cells(ze, 9) = loDeinWert Then
Lieferliste = Lieferliste & Chr(10) & Chr(10) & .Cells(ze, 1) _
& ", " & .Cells(ze, 4) & ", " & .Cells(ze, 5)
ZielZeile = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
.Range(.Cells(ze, 1), .Cells(ze, 11)).Copy
Worksheets("Tabelle1").Cells(ZielZeile, 1).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End With
Next
If Lieferliste = "" Then
GoTo Keine_Lieferung
Else
MsgBox "Heute Ausliefern!" & vbCr & Lieferliste
End If
Application.CutCopyMode = False
Sheets("Startseite").Activate
Application.ScreenUpdating = True
Exit Sub
Keine_Lieferung:
Application.CutCopyMode = False
Sheets("Startseite").Activate
Application.ScreenUpdating = True
MsgBox "Heute keine Lieferungen!"
Exit Sub
End Sub

Ausgabe ist neben der MessageBox jezt nur noch die "Tabelle1".
Gruß
Jochen
Anzeige
AW: noch etwas verkürzt...
06.04.2020 03:05:22
Wolfgang
Hallo Jochen,
vielen Dank, die Codes kann ich beide brauchen.
In deinem ersten Code habe ich nach der variablen Lieferliste eine msgbox Lieferliste eingefügt um den Inhalt der Variablen zu sehen. Dabei ist mir aufgefallen das der Code immer wieder zurückspringt und immer neue Boxen erscheinen bis alle Teile gefunden sind.
Darf ich fragen wie dieser "Loop" zustande kommt?
Ich dachte bisher sowas müßte mit Loop und Do gemacht werden.
https://www.herber.de/bbs/user/136433.xlsm
Grüßle
Wolfgang
Anzeige
AW: noch etwas verkürzt...
06.04.2020 10:40:04
JoWE
Deine MessageBox kommt bei jedem Durchlaufen der Schleife mit den neuen Werten.
Das genau ist der Sinn sowohl einer For-Next-Schleife als auch einer Do-Loop-Scheife.
Die Schleifen machen etwas vom Startwert an solange bis der Endwert der Schleife erreicht ist.
AW: noch etwas verkürzt...
07.04.2020 16:47:40
Wolfgang
Hallo Jochen,
alles klar, wieder was gelernt.
Danke vielmals nochmal.
Es ist jetzt genau so wie ich mir das vorgestellt hatte.
Ich wünsche noch einen schönen Tag.
Gruß
Wolfgang
gerne, schöne Ostertage :=)
08.04.2020 17:41:19
JoWE

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige