Beliebige Stelle eines Strings ausgeben
#1
Hallo zusammen,

nach langer, vergeblicher Suche nach der Lösung für mein Problem hoffe ich, dass mir hier vielleicht geholfen werden kann.
 
Mein Problem:
Ich bin selbst ein absoluter VBA-Anfänger und habe von meinem Vorgänger eine Excel-Datei geerbt, mit der sich Rechnungen auslesen lassen sollen. Das funktioniert jedoch mal besser und mal schlechter…
Die Rechnung kopiere ich mir aus der PDF in ein Tabellenblatt und Suche dann nach meiner Artikelnummer von der ich dann meine Zeile mit „Position, Menge, Preis etc.“ finde.
 
Bsp:
----
Pos        Bezeichnung     Menge    Preis      Preis/ST
1            Name                  20           50           2,5
Artikelnummer 1234
---
 
Ich suche also die importierten Daten nach „Artikelnummer“ ab, nehme mir die Nummer und schreibe Sie in einem anderen Blatt in Spalte 1. Dann gehe ich eine Zeile nach oben und definiere diese als meine Variable „str“.
Bei Rechnungen anderer Firmen hatte die Zeile mit den interessanten Werten immer das gleiche Format bzw. Länge. Da habe ich dann die Zeile mittels split-Funktion an jedem Leerzeichen geteilt und  mir die einzelnen Werte wieder in meinem zweiten Blatt in einzelne Spalten eingetragen.
 
Bei mir:
variable = Split(str, “ “)
Sheets("Daten_Firma XX").Cells(r, 2) = variable(0)
Sheets("Daten_Firma XX").Cells(r, 3) = variable(2)
Sheets("Daten_Firma XX").Cells(r, 4) = variable(3)
Sheets("Daten_Firma XX").Cells(r, 5) = variable(4)
 
Soweit funktioniert alles ganz gut (was schon ein großes Erfolgserlebnis war :18: ).
 
Jetzt sieht das Ganze aber bei einem anderen Lieferanten wie folgt aus:
----
Pos        Bezeichnung                                     Menge  Preis      Preis/ST
1             Name Zusatz1 Zusatz2..                 20          50          2,5
Artikelnummer 1234
---

Dadurch kann ich nicht mehr sagen, dass hinter „variable(2)“ immer die Menge steckt. Von rechts nach links betrachtet, steht mein gewünschter Wert jedoch immer an der gleichen Stelle bzw. nach der gleichen Anzahl an Leerzeichen.
Was ich brächte wäre sowas wie: Sheets("Daten_Firma XX").Cells(r, 3) = variable(n-2)  mit n=Anzahl aller Einzelstücke der Zelle.
 
Bei meiner Suche bin ich schon auf die UBound-Funktion gestoßen, aber hier stehe ich wieder vor dem Problem, dass eine Vorschrift im Sinne von n-x nicht möglich ist, oder ich die richtige Befehlsschreibweise nicht kenne.
Da ich wie bereits gesagt bei VBA absolut am Anfang stehe, bin ich hier leider mit meinem Latein am Ende. Weiß vielleicht Jemand, wie sich das Problem lösen lässt bzw. wie es möglich ist sich eine beliebige Stelle aus der Zeile ausgeben zu lassen?

Vielen Dank schon mal für alle Vorschläge!
Antworten Top
#2
Hallo,

Teste mal so:

Sheets("Daten_Firma XX").Cells(r, 2) = variable(Ubound(Variable) - 3)
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • UnionJack
Antworten Top
#3
Es funktioniert!

Da war ich ja doch gar nicht soweit von entfernt.

Vielen vielen Dank!
Antworten Top


Gehe zu:


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