08.02.2017, 12:01
Hallo zusammen,
mittels VBA lese ich Daten aus einer PDF aus, die ich zuvor in ein Tabellenblatt eingefügt habe.
Ausgehend von einer bereits gefunden Zelle (z.B. i = A45) möchte ich nun die Zellen oberhalb davon nach einem Kriterium absuchen und als Variable "str_werte" definieren.
Meine aktuelle Lösung funktioniert zwar, allerdings ist das einfach nur eine ewig lange Kette um bekannte Eventualitäten abzudecken, siehe hier:
str_werte = Sheets("Tabelle1").Cells(i - 1, 1).Value
If IsNumeric(Left(str_werte, 9)) = False Or Right(str_werte, 1) = "*" Then
str_werte = Sheets("Tabelle1").Cells(i - 2, 1).Value
End If
If IsNumeric(Left(str_werte, 9)) = False Or Right(str_werte, 1) = "*" Then
str_werte = Sheets("Tabelle1").Cells(i - 3, 1).Value
End If
If IsNumeric(Left(str_werte, 9)) = False Or Right(str_werte, 1) = "*" Then
str_werte = Sheets("Tabelle1").Cells(i - 4, 1).Value
End If
If IsNumeric(Left(str_werte, 9)) = False Or Right(str_werte, 1) = "*" Then
str_werte = Sheets("Tabelle1").Cells(i - 5, 1).Value
... und so weiter ...
Als totaler VBA-Anfänger bin ich an sich damit zufrieden, dass es fiunktioniert, aber man möchte ja auch dazulernen.
Wie könnte man das eleganter lösen, also so, dass praktisch eine Schleife so lange immer die darüberliegende Zelle prüft, ob sie mein Kriterium erfüllt?
Mein Kriterium ist, dass die Zelle links genau 9 Ziffern hat und recht kein * haben darf.
Sollte ja so hier funktionieren: If IsNumeric(Left(str_werte, 9)) = True And Right(str_werte, 1) <> "*" Then
nur wie lasse ich Excel automatisch immer eine Zeile aufsteigen?
Ich hoffe ich könnt mir helfen, meinen VBA-Horizont zu erweitern und bedanke mich schonmal für jede Hilfe!
mittels VBA lese ich Daten aus einer PDF aus, die ich zuvor in ein Tabellenblatt eingefügt habe.
Ausgehend von einer bereits gefunden Zelle (z.B. i = A45) möchte ich nun die Zellen oberhalb davon nach einem Kriterium absuchen und als Variable "str_werte" definieren.
Meine aktuelle Lösung funktioniert zwar, allerdings ist das einfach nur eine ewig lange Kette um bekannte Eventualitäten abzudecken, siehe hier:
str_werte = Sheets("Tabelle1").Cells(i - 1, 1).Value
If IsNumeric(Left(str_werte, 9)) = False Or Right(str_werte, 1) = "*" Then
str_werte = Sheets("Tabelle1").Cells(i - 2, 1).Value
End If
If IsNumeric(Left(str_werte, 9)) = False Or Right(str_werte, 1) = "*" Then
str_werte = Sheets("Tabelle1").Cells(i - 3, 1).Value
End If
If IsNumeric(Left(str_werte, 9)) = False Or Right(str_werte, 1) = "*" Then
str_werte = Sheets("Tabelle1").Cells(i - 4, 1).Value
End If
If IsNumeric(Left(str_werte, 9)) = False Or Right(str_werte, 1) = "*" Then
str_werte = Sheets("Tabelle1").Cells(i - 5, 1).Value
... und so weiter ...
Als totaler VBA-Anfänger bin ich an sich damit zufrieden, dass es fiunktioniert, aber man möchte ja auch dazulernen.
Wie könnte man das eleganter lösen, also so, dass praktisch eine Schleife so lange immer die darüberliegende Zelle prüft, ob sie mein Kriterium erfüllt?
Mein Kriterium ist, dass die Zelle links genau 9 Ziffern hat und recht kein * haben darf.
Sollte ja so hier funktionieren: If IsNumeric(Left(str_werte, 9)) = True And Right(str_werte, 1) <> "*" Then
nur wie lasse ich Excel automatisch immer eine Zeile aufsteigen?
Ich hoffe ich könnt mir helfen, meinen VBA-Horizont zu erweitern und bedanke mich schonmal für jede Hilfe!