Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten Top
#2
Hallo Lutz,

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

Gruß Uwe
Antworten 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
Antworten Top
#4
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
Antworten 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
Antworten 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)
Antworten 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
Antworten 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)
Antworten Top


Gehe zu:


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