Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Such- und Ausgabefunktion VBA definieren
#1
Photo 
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
Antworten Top
#2
hier gehts weiter http://www.vba-forum.de/Forum/View.aspx?...tellsystem
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#3
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
Antworten Top
#4
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
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#5
(08.02.2019, 16:11)Flotter Feger schrieb: sieht für mich schon sehr gelößt aus

Das ist doch grosartig. :17:

Gruß Uwe
Antworten Top
#6
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 ?
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • didi*
Antworten Top
#7
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Flotter Feger
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste