Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA: Text kürzen nach x Zeichen plus folgendem Leerzeichen

Forumthread: VBA: Text kürzen nach x Zeichen plus folgendem Leerzeichen

VBA: Text kürzen nach x Zeichen plus folgendem Leerzeichen
10.11.2024 20:36:19
Klaus B aus D
Hallo,

wie müsste eine Schleifenfunktion in VBA aussehen, die einen Text kürzt, der nicht vollständig in ein Formularfeld passt?
Über die Funktion LEFT oder KÜRZEN wäre das zwar einfach zu erledigen, doch ich möchte keinen Abbruch mitten in einem Wort.
In mein Multipage-Textfeld passen gut 120 Zeichen, doch der Text soll erst abgeschnitten werden, wenn nach Erreichen dieses Limits noch bis zum nachfolgenden Leerzeichen weitergezählt wird. Anschließend werde ich über die VERKETTEN-Funktion noch drei Punkte ergänzen.

Gruß Klaus
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Text kürzen nach x Zeichen plus folgendem Leerzeichen
10.11.2024 21:30:09
Rolf
Hallo Klaus,

dafür braucht es doch keine VBA-Schleife:
Text steht in A1, dann

=WENN(LÄNGE(A1)>120;LINKS(A1;FINDEN(" ";A1;120)-1)&"…";A1)

Gruß Rolf
AW: VBA: Text kürzen nach x Zeichen plus folgendem Leerzeichen
11.11.2024 09:37:13
daniel
Hi
das geht prinzipiell ohne schleife:
txtLang= "dein langer Text mit mehr als 120 Zeichen"

txtGekürzt = left(txtLang, 120) & split(mid(txtLang, 121), " ")(0)


man kann natürlich auch eine Schleife einsetzen:
txtLang= "dein langer Text mit mehr als 120 Zeichen"

For i = 120 To Len(txtLang)
If Mid(txtLang, i, 1) = " " Then Exit For
Next
txtGekürzt = Left(txtLang, i - 1)


Gruß Daniel
Anzeige
AW: VBA: Text kürzen nach x Zeichen plus folgendem Leerzeichen
10.11.2024 21:42:06
Onur
Hast du denn deine Formel auch mal getestet?
AW: VBA: Text kürzen nach x Zeichen plus folgendem Leerzeichen
11.11.2024 01:56:33
Klaus B aus D
Hallo Rolf,

danke für Deine Idee, die ich in einem Arbeitsblatt direkt umsetzen konnte.
Da ich die Texte aus einem Fragenkatalog in bestimmte Felder einer Userform schreiben will, habe ich versucht, deine gelieferte Funktion für den Code zu "übersetzen", den ich gerade schreibe. Wegen der noch geringen Excel-VBA-Kenntnisse gelingt es mir leider nicht, denn es erscheint die Fehlermeldung "Fehler beim Kompilieren: Objekt erforderlich". Zusätzlich wird der Teil "Frage" in der Set-Zeile markiert. Hier mein Versuch:
Private Sub cboHK_Change()


Select Case cboHK
Case Is = "HK 1"
MultiPage1.Visible = True
MultiPage2.Visible = False

Case Is = "HK 2"
MultiPage1.Visible = False
MultiPage2.Visible = True
End Select

' Fragenfelder füllen
Dim Frage As String
Dim FrageGekuerzt As String

Set Frage = Worksheets("Fragenkatalog").Cells(5, 2).Value

If Length(Frage) > 60 Then
FrageGekuerzt = Left(Frage, Find(" ", Frage > 60) - 1) & " ..."
Else
FrageGekuerzt = Frage
End If

'txtF111.Value = Worksheets("Fragenkatalog").Cells(5, 2).Value
txtF111.Value = FrageGekuerzt

End Sub


Die auskommentierte Codezeile "txtF111 .Value ..." funktioniert, schneidet zu langen Text aber natürlich nicht ab.

Gruß Klaus
Anzeige
AW: VBA: Text kürzen nach x Zeichen plus folgendem Leerzeichen
11.11.2024 02:05:27
Onur
.Value

ist der WERT.
SET jedoch nimmt man nur bei Objekten (z.B. Ranges).
AW: VBA: Text kürzen nach x Zeichen plus folgendem Leerzeichen
11.11.2024 11:42:12
Rolf
Guten Morgen Klaus,

meine Formel in VBA 'übersetzt' würde so aussehen:
FrageGekuerzt = Left(Frage, InStr(60, Frage, " ") - 1) & "..."

aber, wie Du sicher schon gesehen hast, viele Wege führen nach Rom ;-)

Gruß Rolf
Anzeige
AW: was ist daran denn falsch?
10.11.2024 21:52:49
Rolf
Gruß Rolf
AW: was ist daran denn falsch?
10.11.2024 22:00:24
Onur
Setze doch mal deine Formel unter die Zeile mit meiner Formel (in meiner Datei) und schaue, was bei dir herauskommt.
AW: was ist daran denn falsch?
10.11.2024 22:15:48
Rolf
Zitat: der Text soll erst abgeschnitten werden, wenn nach Erreichen dieses Limits noch bis zum nachfolgenden Leerzeichen weitergezählt wird.

Ich habe das so interpretiert, dass der Text auch etwas länger sein kann.
Er schreibt ja auch, "gut 120 Zeichen".

Aber schaun wir mal, was Klaus dazu sagt, er hat ja jetzt beide Optionen.

Gruß Rolf
Anzeige
AW: was ist daran denn falsch?
10.11.2024 22:20:09
Onur
Sorry, du hast natürlich Recht - ich habe es falsch verstanden.
AW: was ist daran denn falsch?
10.11.2024 22:27:36
Rolf
...alles gut!

max 120 Zeichen ginge natürlich auch mit dem klassischen VERWEIS.
=LINKS(A1;VERWEIS(9^9;FINDEN(" ";LINKS($A$1;120);ZEILE(A$1:A$299)))-1)&"…"

aber, was erzähl ich Dir da ;-)

Gruß Rolf
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18