Microsoft Excel

Herbers Excel/VBA-Archiv

Teilstring erkennen | Herbers Excel-Forum


Betrifft: Teilstring erkennen von: Karsten
Geschrieben am: 13.01.2010 09:12:08

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?

  

Betrifft: Left(strBegriff, 4) = "Prüf"!!! von: Björn B.
Geschrieben am: 13.01.2010 09:14:16

Hallo,

Du solltest als Länge schon die 4 angeben, nicht 1!

Gruß
Björn B.


  

Betrifft: AW: Teilstring erkennen von: Michael
Geschrieben am: 13.01.2010 09:14:41

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


  

Betrifft: AW: Teilstring erkennen von: Karsten
Geschrieben am: 13.01.2010 09:44:36

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?


  

Betrifft: AW: Teilstring erkennen von: Reinhard
Geschrieben am: 13.01.2010 10:02:24

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") =  _
0
   lngLast = lngLast + 1
Loop

Gruß
Reinhard


  

Betrifft: AW: Teilstring erkennen von: Karsten
Geschrieben am: 13.01.2010 10:09:19

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


  

Betrifft: AW: Teilstring erkennen von: Hajo_Zi
Geschrieben am: 13.01.2010 10:14:22

Hallo Karsten,

ich hätte vielleicht or benutzt an Stelle von and

GrußformelHomepage


  

Betrifft: AW: Teilstring erkennen von: Reinhard
Geschrieben am: 13.01.2010 10:25:21

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


  

Betrifft: AW: Teilstring erkennen von: Reinhard
Geschrieben am: 13.01.2010 10:15:42

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


  

Betrifft: AW: Teilstring erkennen von: Karsten
Geschrieben am: 13.01.2010 09:31:07

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)


  

Betrifft: AW: Teilstring erkennen von: Björn B.
Geschrieben am: 13.01.2010 09:55:36

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.


  

Betrifft: AW: Teilstring erkennen von: Karsten
Geschrieben am: 13.01.2010 10:05:01

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



  

Betrifft: Logikfehler... von: Björn B.
Geschrieben am: 13.01.2010 10:23:05

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.


  

Betrifft: JEPP!!! Das wars. Vielen, vielen Dank. von: Karsten
Geschrieben am: 13.01.2010 10:27:07

Hallo Björn,
darauf trinke ich heute abend ein gutes Glas Wein auf Dich. Das genau war es. Vielen, vielen Dank!

Gruß Karsten


  

Betrifft: schön... von: Björn B.
Geschrieben am: 13.01.2010 10:29:44

...danke für die Rückmeldung.
Nur schade, dass ich nichts von dem Wein bekomme... ;-)

Gruß
Björn B.


Beiträge aus den Excel-Beispielen zum Thema "Teilstring erkennen"