Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Leerzeichen rechts abschneiden

Begonnen von Torsten., April 19, 2023, 17:22:22

⏪ vorheriges - nächstes ⏩

Torsten.

Hallo zusammen,
könnt Ihr mir bitte behilflich sein und den vorhandenen Code statt für links auf rechts abändern.
Ich verstehe die Logik dahinter nicht und benötige somit Eure Hilfe.
Option Compare Database
Option Explicit

'If Left$(strText, 1) = " " Then / Leerzeichen am Anfang werden entfernt

Function LeerzeichenWeg(strText As String) As String
    Dim I As Integer
   
    For I = 1 To Len(strText)
        If Left$(strText, 1) = " " Then
            strText = Right$(strText, Len(strText) - 1)
          Else
            Exit For
        End If
    Next I
    LeerzeichenWeg = strText
End Function


Gruß Torsten

MzKlMu

#1
Hallo,
oder einfach so:
Function LeerzeichenWeg(strText As String) As String
    LeerzeichenWeg = Trim(strText)
End Function
Entfernt alle Leerzeichen vorn und hinten.
Gruß Klaus

andyfau

...oder Rtrim(... entfernt nur rechts.

Gruß
Andreas
Beste Grüße
Andreas

MzKlMu

... oder LTrim(... entfernt nur links.  ;D  ;)  :)
Gruß Klaus

Torsten.

Guten Morgen,
vielen Dank für die "einfache" Lösung.

Ich möchte Euch bitten den von mir angezeigten Code von left nach right umzuschreiben, damit ich nachvollziehen kann was geändert werden muß.
Ich habe gestern eine längere Zeit versucht den Code anzupassen - leider ohne Erfolg.
Ich würde das Ergebnis gerne sehen um die Logik dahinter zu verstehen.

Vorab vielen Dank.

Gruß Torsten

MzKlMu

Hallo,
hast du schon mal versucht den Code im Einzelschritt zu durchlaufen?
Dazu Stopp Zeile einfügen mit F8 geht es dann weiter.
Gruß Klaus

Torsten.

Hallo,
ich werde es probieren:
Wo finde ich:
ZitatStopp Zeile einfügen

MzKlMu

Hallo
die Stopp Zeile musst du selbst einfügen

Offensichtlich hast du keine Kenntnisse von VBA, dann wird das natürlich etwas schwieriger.
Tip: Für Rechts musst du von hinten anfangen.
Gruß Klaus

Beaker s.a.

Hallo Torsten,
ZitatIch möchte Euch bitten den von mir angezeigten Code von left nach right umzuschreiben
Hat Klaus doch in #1 schon gemacht. Musst du nur noch das "L" ergänzen, s. #3.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Torsten.

Hallo Klaus, jetzt bleibe ich dran  ;)
Richtig keine Erfahrung...

Zitatdie Stopp Zeile musst du selbst einfügen
Wie sieht die Stopp Zeile geschrieben aus?

ZitatTip: Für Rechts musst du von hinten anfangen.
Ja, beim probieren habe ich auch ein Augenmerk auf die Zahlen gelegt, gehe aber davon aus das aus
If Left$(strText, 1) --> If Right$(strText, 1)wird und aus
strText = Right$(strText, Len(strText) - 1 --> strText = Left$(strText, Len(strText) - 1 wird.
Ist der Gedanke mit dem vertauschen von Left/Right der falsch weg, "nur" die Zahlen anpassen?

@ Ekkehard
Ja das habe ich gesehen und bestätigt, ich möchte aber verstehen wie der o.g. Code für Right ist, daher meine Nachfragen.

Gruß Torsten

Beaker s.a.

Hast du mal den Cursor auf die Funktion (Left/Right) gesetzt und F1 gedrückt?
Ach ja
...
Stop
...
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

andyfau

Angesichts der vorhandenen Funktionen Trim/R-und LTrim sollte der anfangs gezeigte Code schlicht eingestampft werden.

Als Anfangslekture für VBA gibt es da z.B.

https://www.vba-tutorial.de/
 
Beste Grüße
Andreas

MzKlMu

#12
Hallo,
hier mal für rechte LZ.

Function LeerzeichenWeg(strText As String) As String
Dim I As Integer
    For I = Len(strText) To 1 Step -1 'von hinten anfangen
        If Right$(strText, 1) = " " Then
            strText = Left$(strText, Len(strText) - 1)
          Else
            Exit For
        End If
    Next I
    LeerzeichenWeg = strText
End Function
Gruß Klaus

Torsten.

Hallo Klaus,
vielen Dank für die Änderung.

Ich habe vorhin bei meinen Proben einfach Left$ und Right$ ausgetauscht, ohne wie gestern an den Zahlen herum zu probieren. Das hat dann funktioniert siehe Code:
Option Compare Database
Option Explicit

'If Right$(strText, 1) = " " Then / Leerzeichen am Ende werden entfernt

Function LeerzRechtsWeg(strText As String) As String
    Dim I As Integer
       For I = 1 To Len(strText)
        If Right$(strText, 1) = ")" Then
            strText = Left$(strText, Len(strText) - 1)
          Else
            Exit For
        End If
    Next I
    LeerzRechtsWeg = strText
End Function

Nun hast Du in Deinem Code die folgende Zeile zusätzlich geändert:
For I = Len(strText) To 1 Step -1 'von hinten anfangen
Würdest Du bitte versuchen mir das noch zu erklären?

Gruß Torsten

Beaker s.a.

Was gibt es da noch zu erklären, was denkst du wozu Klaus den
Kommentar dazu geschrieben hat.
Und warum willst du jetzt plötzlich eine ")" löschen? Es ging
doch um Leerzeichen.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)