Clever-Excel-Forum

Normale Version: Such- und Ausgabefunktion VBA definieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Tag Community,

vorab möchte ich darauf hinweisen, dass meine VBA-Kentnisse nicht die größten sind.
Trotzalledem habe ich großes Interesse und auch schon das ein oder andere Projekt mittels VBA realisiert.


Aktuell soll ich im Zuge meiner Ausbildung den Bestellprozess für Material erleichtern.
Daher dachte ich mittels VBA und teils automatisierter Abläufe wäre das Thema schon deutlich effizienter.

Soweit sind auch die meisten bisherigen funktionalitäten in Benutzung und zeigen keinerlei Fehler.
Lediglich die Suche nach Bestellnummern und der Ausgabe der Artikelbeschreibung bereitet mir noch das ein oder andere
Problem.


IST-Zustand:
Aktuell habe ich einen wahrscheinlich umständlichen aber immerhin selbstgebauten Weg eingeschlagen.
Code:
Dim rng As Range

   'Set rng = Tabelle2.Range("A6:D200").Find(Range("A7:C200"))
Set rng = Tabelle2.Range("A6:D200").Find(BarcodeText)
   '
   ' Definition des Suchbereiches "rng".
   '
BarcodeText.Value = ""
   '
   '
If rng Is Nothing Then
 MsgBox "Es ist ein Fehler aufgetreten! Der Artikel konnte Anhand der Bestellnummer nicht im Katalog gefunden werden. Bitte die Artikelbeschreibung Händisch eintragen."
 Exit Sub
   '
   '
   '
   ' Suchfunktion -> übergibt Ergebnis an die Variable rng.Row
   ' Bei einem Fehlerfall (Bestellnummer nicht im Katalog gelistet) erscheint eine Fehlermeldung in einem neun Fenster.
   '
   '
 Else
   '
 
passendeZelle = rng.Row
'schreibt das Suchergebnis in die Variable passendeZelle
   '
   Sheets("Produktkatalog").Select
   'Sprung in andere Tabelle
   Text = Cells(passendeZelle, 5)
   'Variable der Passenden Zelle in Spalte 5
   Sheets("GUI_Bestellsystem").Select
   'Sprung in andere Tabelle
   Cells(Application.Max(6, Cells(Rows.Count, 4).End(xlUp).Row + 1), 4) = Text
   'Setzt die Artikelbeschreibung in der Tabelle GUI_Bestellsystem in Spalte 4 in die
   'nächste freie Zelle ein.
   '



End If

Soweit funktioniert die Funktion auch Tadellos. Auf der Mappe "GUI_Bestellsystem" wird ab Zelle A7fortlaufend (Sprich A8, A9, etc.) mit jeder Eingabe von BarcodeText der Wert in die nächste Zelle geschrieben.
Die "Suchfunktion" sucht aus den Zellen auch zuverlässig den Value heraus, und sucht in der Matrix auf Mappe "Produktkatalog" nach passenden Werten.


Befindet sich jedoch beispielsweise in Zelle A8 der Wert "1234" und in Zelle A90 der Wert "123" so wird mit einem BarcodeText.Value von "123" immer der erste gefundene Wert ausgegeben, sprich Zelle A8 bzw. die Produktbeschreibung dieser Zeile welche sich in Spalte 5 befindet.


SOLL-Zustand
Meine Idee war dann aufgrund des Fehlers eine Finden/Index kombination.
Jedoch hab ich es bisher nicht hin bekommen, dies in VBA zu realisieren. Vor allem mit den aufsteigenden Zeilen bei der Eingabe der Bestellnummer...


Der Wunsch:
Das eigentliche Dokument besteht aus 2 Mappen. GUI_Bestellsystem (soll die Hauptmappe sein. Beinhaltet mehrere Schaltflächen mit Funktionen) und eine Mappe namens Produktkatalog (wird ausschließlich als Datenbank benutzt).

In der Mappe Produktkatalog befinden sich die Werte für:
- Bestellnummer (A6:D200)
- Artikelbeschreibung (E6:H200)
- Lieferant (I6:K200)
- Kosten (L6:N200)
Davon für mein derzeitiges Vorhaben sind Bestellnummer und Artikelbeschreibung relevant!

In der Mappe GUI_Bestellsystem befinden sich die Zellen für Bestellnummer und Artikelbeschreibung.
Diese sind zu Beginn der Bestellung leer. Der Vorgang wird durch mehrere UserFormen eingeleitet.
Abgefragt wird dort unter anderem die Bestellnummer. Diese wird in der Mappe GUI_Bestellsystem fortlaufend beginnend mit der Zelle A7 eingetragen.
Parallel dazu erfolgt nach jeder Eingabe die Abfrage, welche Artikelbeschreibung die neue Bestellnummer hat.

Nun zum Knackpunkt. Die Bestellnummer (Mappe GUI...... Zelle ab A7) soll mit den Bestellnummern der Mappe Produktkatalog (A6:D200) abgeglichen warden. Nur bei absoluter Übereinstimmung soll dann der danebenstehende Wert der Artikelbeschreibung (E6:H200) in die Mappe GUI.... übernommen und in die zuvor genutzte Zeile in Spalte 5 (D) übergeben werden.

Bin leider sehr ratlos. Ich weiß nicht, ob mein Vorhaben oder mein Wunsch, bzw. die Idee verständlich geworden ist.

Über eure Mithilfe würde ich mich sehr freuen.

Mit freundlichem Gruß
Kevin
Hallo Kevin

ich habe den Hinweis auf das andere Forum gesehen!  Eine Lösung scheint es aber bis jetzt nicht zu geben. 
Nur mit deiner Beschreibung kann ich wenig anfangen, ich müsste eine Beispieldatei mit einigen Daten haben.

Vor allem wie genau der zu suchende Text aufgebaut ist, damit man "123" von "1234" unterscheiden kann.  Im Idealfall könntest du die Find Methode auf xlWhole setzen, vergleiche den ganzen Such-Text, sonst vergleicht Excel auch Teile im Text.  Wenn man da weiter knobeln muss geht das nur wenn ich die Datei mit möglichst exakten Beispiel Daten sehe.  VBA bietet da noch jede Menge Tricks, die man aber kennen muss!

mfg  Gast 123
Hallo du Bosporus-Hocker,

sieht für mich schon sehr gelößt aus ... http://vba-forum.de/forum/View.aspx?ziel...tellsystem 08.02.2019 11:05:26
(08.02.2019, 16:11)Flotter Feger schrieb: [ -> ]sieht für mich schon sehr gelößt aus

Das ist doch grosartig. :17:

Gruß Uwe
Gute Güte ...

veräppelt mich ruhig ... ich bin doch nicht von hier. :22:

Und dafür, dass ich kein Muttersprachler bin, hab ich's doch schon ganz gut drauf ... finde ich. Oder nicht ?
Hallo Sabina,

(08.02.2019, 20:02)Flotter Feger schrieb: [ -> ]Und dafür, dass ich kein Muttersprachler bin,  hab ich's doch schon ganz gut drauf ... finde ich. Oder nicht ?

keine Frage!  Thumps_up
Und es gibt auch noch erwachsene Menschen, deren 2. Muttersprache nicht VBA nebst Excelfunktionen ist.  :32:

Gruß Uwe