VBA: Finden trotz Zeilenumbruch
#1
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
Top
#2
Hallo Lutz,

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

Gruß Uwe
Top
#3
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
Top
#4
Hallo,

(01.03.2021, 14:32)Fennek schrieb: ... oder (oft) besser mit Replace entfernt.

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

Gruß Uwe
Top
#5
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
Top
#6
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#7
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
Top
#8
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.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top


Gehe zu:


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