Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1128to1132
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
Inhaltsverzeichnis

Teilstring erkennen | Herbers Excel-Forum

Teilstring erkennen
13.01.2010 09:12:08
Karsten

Guten Morgen von der Mosel,
nachdem ich gestern gute Fortschritte gemachte habe, brauche ich ein wenig Hilfe. Alles funktioniert, bis auf die erkennen von einem Teilstring.
Do While .Cells(lngLast + 1, 1) <> " " Or Left(strBegriff, 1) = "Prüf"
lngLast = lngLast + 1
Loop
Hinter dem "Oder" das macht er nicht. Er soll doch auch dann aus der Schleife raus wenn da Prüfung oder rüfung 20-70 oder Prüfung 2123xx steht. Was mache ich nur falsch?

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Left(strBegriff, 4) = "Prüf"!!!
13.01.2010 09:14:16
Björn B.
Hallo,
Du solltest als Länge schon die 4 angeben, nicht 1!
Gruß
Björn B.
AW: Teilstring erkennen
13.01.2010 09:14:41
Michael
was soll er denn hinter dem "OR" prüfen da steht nur LEFT, aber was für eine celle???
das fehlt wohl das .cells(...
Gruß
Michael
AW: Teilstring erkennen
13.01.2010 09:44:36
Karsten
Jetzt habe ich es mal so probiert, aber leider funtkioniert das auch noch nicht. Bin da ein wenig Ratlos:
Do While .Cells(lngLast + 1, 1) <> " " Or .Cells(lngLast + 1, 1) = Left("Prüf", 4)
lngLast = lngLast + 1
Loop
Was tun?
AW: Teilstring erkennen
13.01.2010 10:02:24
Reinhard
Hallo Karsten,
willst du bei .Cells(lngLast + 1, 1) <> "" auf ein leerzeichen oder auf leere Zelle prüfen?
Do While .Cells(lngLast + 1, 1) <> "" And InStr(UCase(Left(.Cells(lngLast + 1, 1))), "PRÜF") =  _
lngLast = lngLast + 1
Loop

Gruß
Reinhard
Anzeige
AW: Teilstring erkennen
13.01.2010 10:09:19
Karsten
Hallo Reinhard,
es soll eigentlich auf eine leere Zelle geprüft werden. Das haut auch hin, jedenfalls in meinem Vorhaben. Das Problem ist das er auch nach den Teilbegriff Prüfung suchen soll. Das macht er aber nicht.
Gruß aus Koblenz
AW: Teilstring erkennen
13.01.2010 10:14:22
Hajo_Zi
Hallo Karsten,
ich hätte vielleicht or benutzt an Stelle von and

AW: Teilstring erkennen
13.01.2010 10:25:21
Reinhard
Hallo Hajo,
in meinem Codeschnipsel ist And schon richtig, ich hatte nur einen anderen Fehler drin.
Jetzt getestet:

Do While .Cells(lngLast + 1, 1) <> "" And InStr(UCase(.Cells(lngLast + 1, 1)), "PRÜF") = 0
lngLast = lngLast + 1
Loop
Oder
Do While .Cells(lngLast + 1, 1) <> "" And UCase(Left(.Cells(lngLast + 1, 1), 4)) <> "PRÜF"
lngLast = lngLast + 1
Loop

Gruß
Reinhard
Anzeige
AW: Teilstring erkennen
13.01.2010 10:15:42
Reinhard
Hallo Karsten,
:::es soll eigentlich auf eine leere Zelle geprüft werden:::
Dann mache das auch in deinem Code.
Das prüft auf leere Zelle: ""
Das prüft auf Leerzeichen in einer Zelle: " "
Gruß
Reinhard
AW: Teilstring erkennen
13.01.2010 09:31:07
Karsten
Oh, das ging schnell. Vielen Dank an Euch beiden. Mit "4" habe ich es probiert. Leider Fehlanzeige. Wie aber bau ich das mit dem Left um, dass die Zelle angegeben wird. Links vom Or ist mir das klar, aber rechts. Sorry, aber bin da leider ein blutiger Anfänger. Will mich aber bessern. ;o)
AW: Teilstring erkennen
13.01.2010 09:55:36
Björn B.
Was willst Du eigentlich? Formulier Deine Frage mal so, dass es andere verstehen...
Schau mal in die Hilfe, was die zu dem Befehl Left sagt:
"Gibt einen Wert vom Typ Variant (String) zurück, der eine bestimmte Anzahl von Zeichen ab dem ersten (linken) Zeichen einer Zeichenfolge enthält.
Syntax
Left(string, length)"

Du gibst in Deinem ersten Befehl strBegriff (eine Variable, die irgendwo mit irgendwas befüllt wird, das kann hier keiner sehen!!!) als "string" an, und 1 als length.
Also, heißt übersetzt: Nimm von der Zeichenfolge "strBegriff" von links genau 1 Zeichen.
Wenn das gleich "Prüf" sein soll, dann kann das nicht gehen, weil "Prüf" nunmal 4 Zeichen sind.
Wenn der Wert (Value) einer Zelle geprüft werden soll, dann musst Du das statt der Variablen strBereich auch schreiben...
Ich weiß jetzt nicht, welche Zelle durchsucht werden soll, wenn die gleiche Zelle wie vor dem "Or" gemeint ist, dann muss es so aussehen:
Do While .Cells(lngLast + 1, 1) <> " " Or Left(.Cells(lngLast + 1, 1).Value, 4) = "Prüf"
Funktioniert das?
Hast du das verstanden oder muss ich noch besser erklären?
Gruß
Björn B.
Anzeige
AW: Teilstring erkennen
13.01.2010 10:05:01
Karsten
Vielen, vielen Dank Björn für Deine Hilfe, aber leider funktioniert es (noch) nicht. Die Leerzelle findet er und geht dann auch raus aus der Schleife, aber immer noch nicht den Teilbegriff "Prüf.."
Hier ist mal der komplette Code:
Sub übertragen()
Dim lngRow As Long, lngLast As Long
With Worksheets("Tabelle2")
Do While lngRow <= 200
lngRow = lngRow + 1
If .Cells(lngRow, 1) = "INHALT_TEXT" Then
lngLast = lngRow + 2
Do While .Cells(lngLast + 1, 1) <> " " Or Left(.Cells(lngLast + 1, 1).Value, 4) = "Prüf" _
lngLast = lngLast + 1
Loop
.Range(.Cells(lngRow + 1, 1), .Cells(lngLast, 1)).Copy
Worksheets("Tabelle1").Cells(14, 3).End(xlUp).Offset(1, 0).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
lngRow = lngLast + 1
End If
Loop
End With
Application.CutCopyMode = False
End Sub

Anzeige
Logikfehler...
13.01.2010 10:23:05
Björn B.
Hallo,
du machst einen Denkfehler....
Deine Bedingung stimmt nicht. Überleg mal.
Du prüfst:
Mach was, solange in der geprüften Zelle nicht nix steht.... dann kommt deine Oder Bedingung.
Bei Oder-Verknüpfungen muss eine der beiden Bedingungen zutreffen. Die erste trifft zu, auch wenn "Prüf" in der Zelle steht, das wird dann aber ignoriert.
Wahrscheinlich meinst du das:
Do While .Cells(lngLast + 1, 1) <> " " And Left(.Cells(lngLast + 1, 1).Value, 4) <> "Prüf"
Denk auch daran, dass du mit " " nach einem Leerzeichen suchst.
Gruß
Björn B.
JEPP!!! Das wars. Vielen, vielen Dank.
13.01.2010 10:27:07
Karsten
Hallo Björn,
darauf trinke ich heute abend ein gutes Glas Wein auf Dich. Das genau war es. Vielen, vielen Dank!
Gruß Karsten
Anzeige
schön...
13.01.2010 10:29:44
Björn B.
...danke für die Rückmeldung.
Nur schade, dass ich nichts von dem Wein bekomme... ;-)
Gruß
Björn B.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige