Clever-Excel-Forum

Normale Version: VBA: Finden trotz Zeilenumbruch
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo wertes Forum,

ich habe da ein Problem mit einer Suche per VBA.
Ich möchte einen bestimmten Text in einem Blatt suchen. Dazu nutze ich bisher folgende Zeile:
Code:
IntSpalteOpenOrdersPC = .UsedRange.Find(What:="Completed Process Orders by ProfitCenter", After:=.Cells(IntZeileKopfAus, IntSpalteTotalOpenOrders), LookIn:=xlValues, LookAt _
    :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Column
Das funktioniert prima

Jetzt brauche ich aber (und ja, ich weiß, Excel ist nicht für's hübsch machen da...) das ganze mit Zeilenumbruch (Alt+Return) in der Zelle.
Der Text ist nicht mehr
"Completed Process Orders by ProfitCenter"
sondern
"Completed Process Orders
by ProfitCenter".

Ist das irgendwie machbar?
Hab's mit *, vbCrLf und allem, was mir einfällt, probiert, aber ich krieg's nicht hin.

Vielen Dank,
Lutz
Hallo Lutz,

Code:
.Find(What:="Completed Process Orders" & Chr(10) & "by ProfitCenter",

Gruß Uwe
Hallo,

der Zeilenumbruch ist das Zeichen Chr(10).

Das wird entweder in den Suchbegriff eingearbeitet, oder (oft) besser mit Replace entfernt.

Pseudo-Code

Code:
such = replace(cells(1,1), chr(10), "")

mfg
Hallo,

(01.03.2021, 13:32)Fennek schrieb: [ -> ]... oder (oft) besser mit Replace entfernt.

wie würde das mit der Find-Methode funktionieren?

Gruß Uwe
Hallo zusammen,

mit Chr(10) kommt der Laufzeitfehler 91: "Objektvariable oder With-Blockvariable nicht festgelegt". (Wie üblich, wenn die Suche erfolglos war.)
Aber ist Chr(10) überhaupt etwas anderes als vbCrLf?


Wie sollte ich das replace die Find-Anweisung einbauen? Stehe da etwas auf dem Schlauch.

Gruß,
Lutz
Ist der Text wirklich mit Zeilenumbruch Zeichen 10 (Alt+Enter) "hart" umbrochen oder handelt es sich um die "weiche" Methode?
(Start → Ausrichtung → Textumbruch)

Anyway würde ich zusätzlich zu Uwes Code LookAt:=xlPart nehmen, um das evtl. vorhandene Zeichen 32 vor oder nach Zeichen 10 unter den Tisch fallen zu lassen.

Gruß Ralf
Hallo Ralph,

hab jetzt noch mit den Parametern rumprobiert...

Das LookIn:=xlValues war der FehlerHuh. Mit LookIn:=xlFormulas funktioniert's...

Vielen Dank für die Hilfe,
Lutz
Wenn nur der Text in der Zelle steht, geht (natürlich) auch xlValues
Wenn der Text aber durch eine Formel gebildet wird …

Ich habe jetzt mal
Ralf(Alt+Enter)
P
in eine Zelle geschrieben (also ohne Leerzeichen).
Debug.Print Cells.Find(What:="Ralf*" & Chr(10), After:=Cells(1), LookIn:=xlValues, LookAt:=xlPart).Address
erbrachte das erwartete Ergebnis.