VBA: Leerzeichen löschen innerh. einer Zeichenfolg

Hallo,
in einer Zeichenfolge unterschiedlicher Länge befinden sich am Anfang, am Ende, aber auch innerhalb der Zeichenfolge an mehreren Positionen Leerschritte (einer bzw mehrere nebeneinander).Die am Anfang und Schluss befindlichen sollen alle gelöscht werden, was mir mit

Private Sub cbo1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Do While Left(cbo1.Text, 1) = " "
cbo1.Text = Right(cbo1.Text, Len(cbo1.Text) - 1)
Loop
Do While Right(cbo1.Text, 1) = " "
cbo1.Text = Left(cbo1.Text, Len(cbo1.Text) - 1)
Loop
End Sub

gelingt.

Innerhalb der Zeichenfolge sollen an allen Positionen die mehreren Leerschritte bis auf jeweils einen gelöscht werden: Also Klaus LSLS Meier soll in Klaus LS Meier umgewandelt werden. Müsste doch wohl über eine InStr-Funktion gehen, aber wie? Danke für Tips.
Gruß
Wilhelm

in einer Zeichenfolge unterschiedlicher Länge befinden sich am
Anfang, am Ende, aber auch innerhalb der Zeichenfolge an
mehreren Positionen Leerschritte (einer bzw mehrere
nebeneinander).Die am Anfang und Schluss befindlichen sollen
alle gelöscht werden, was mir mit

Innerhalb der Zeichenfolge sollen an allen Positionen die
mehreren Leerschritte bis auf jeweils einen gelöscht werden:
Also Klaus LSLS Meier soll in Klaus LS Meier umgewandelt
werden.

Hallo Wilhelm,

Private Sub cbo1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
cbo1.Text = Application.Trim(cbo1.Text)
End Sub

Gruß
Reinhard

Hallo Reinhard,
mit
cbo1.Text = Trim(cbo1.Text)
löscht der Code die äußeren Leerzeichen. Mir kommt es aber auch insbesondere darauf an, bestimmte Leerzeichen i n n e r h a l b der Zeichenkette zu löschen, so dass innerhalb der Kette immer nur ein Leerschritt bleibt:
Ist: Reinhard ist mir immer ein schneller und zuverlässiger Helfer.
Soll: Reinhard ist mir immer ein schneller und zuverlässiger Helfer.
Diese unerwünschten Leerzeichen kommen aus den abgerufenen Vorcodes(unser Austausch neulich).
Gruß
Wilhelm

Hallo,

ich misch mich mal ein. :smile:

Mir kommt es aber
auch insbesondere darauf an, bestimmte Leerzeichen i n n e r
h a l b der Zeichenkette zu löschen, so dass innerhalb der
Kette immer nur ein Leerschritt bleibt

verstehe ich das richtig? Aus „xx XX“ soll „xx XX“ (erst zwei Leerzeichen zwischen den kleinen und den großen, dann nur noch eins) werden?

Dann würde ich das mit ‚Replace‘ erledigen.

While Instr(txt, " ")
 txt = Replace(txt, " "," ")
Wend

Gruß Rainer

Hallo Wilhelm,

cbo1.Text = Trim(cbo1.Text)
löscht der Code die äußeren Leerzeichen.

ja.

Das kommt davon wenn man meinen Code kürzt :smile:, benutze ihn so wie ich ihn schrieb.
Excel-Vba kennt zwei TRIMs.

Gruß
Reinhard

Mir kommt es aber

auch insbesondere darauf an, bestimmte Leerzeichen i n n e r
h a l b der Zeichenkette zu löschen, so dass innerhalb der
Kette immer nur ein Leerschritt bleibt:
Ist: Reinhard ist mir immer ein schneller und
zuverlässiger Helfer.
Soll: Reinhard ist mir immer ein schneller und zuverlässiger
Helfer.
Diese unerwünschten Leerzeichen kommen aus den abgerufenen
Vorcodes(unser Austausch neulich).
Gruß
Wilhelm

An R. und R.:smiley:anke, jetzt läuft alles!
Danke