Prüfen ob letzte(s) Zeichen in Zelle = Leerzeichen, wenn ja: LÖSCHEN!"

Dieses Thema Prüfen ob letzte(s) Zeichen in Zelle = Leerzeichen, wenn ja: LÖSCHEN!" im Forum "Microsoft Office Suite" wurde erstellt von JonnyHeart, 7. Dez. 2006.

Thema: Prüfen ob letzte(s) Zeichen in Zelle = Leerzeichen, wenn ja: LÖSCHEN!" Hallo Wintotaler, Ich habe folgendes Problem. Bei einem Vergleich zweier Spalten findet mein Makro KEINE...

  1. Hallo Wintotaler,

    Ich habe folgendes Problem. Bei einem Vergleich zweier Spalten findet mein Makro KEINE Übereinstimmung, da die Werte (TEXT)in der zweiten Spalte am Ende Leerzeichen enthalten (Es kann ein Leerzeichen folgen oder mehrere)

    __> diese sollen abgeschnitten werden !!!!!


    Bsp. Spalte A

    hammer
    nagel
    becher

    Spalte B

    hammer[hier noch ein leerzeichen]
    nagel usw...


    WIE schneide ich in Spalte B in den Zeilen von A1 bis A100 jeweils das letzte Zeichen ab - Bedingung abschneiden nur wenn es ein LEERZEICHEN  ist ???

    Hab schon mit if und contains experimentiert, ergebnis = erfolglos .-(

    HELP & Thanxx

    JONNY
     
  2. Im Makro kannst Du im Vergleich die TRIM-Funktion verwenden, um die Leerzeichen nicht zu berücksichtigen. Falls Gross- und Kleinschreibung auch->egal' sein soll, schau Dir auch mal die Funktion UCASE an. Dann würde ich im Vergleichsausdruck links und rechts vom Gleichheitszeichen eine geschachtelte UCASE(TRIM(...))-Konstruktion verwenden.
     
  3. Folgendes hab ich erreicht:

    Wie kann ich diese Funktion auf alle/bestimmte Arbeitsblätter übertragen...

    1. )Wie kann ich nun das Makro (befindet sich auf Tabellenblatt 1) dahingehend verändern ,dass dieses nur in Tabelle2, Spalte 2 die TRIM Funktion ausführt ??


    ---------------HIER DER CODE-------------------
    Sub ()

    Dim k as Long

    For k = 1 To Cells(Rows.Count, 2).End(xlUp).Row
    Cells(k, 2) = Trim(Cells(k, 2))
    Next k

    End Sub
    -----------------------------------------------


    Wo liegt hier das Problem ?? In Tabelle 2 soll in Spalte 2 in den Zeilen 1 bis ENDE (wird berechnet) der TRIM-Befehl ausgeführt werden...geht leider nicht !!

    --------------------CODE---------------------

    HIER DER VERSUCH NUR TABELLE2 ANZUSPRECHEN....geht leider nicht :-(
    ____________________________________________________________________

    Private Sub CommandButton2_Click()

    Dim i As Long

    Trim (Sheets(Tabelle2).Cells(Rows.Count, 1).End(xlUp).Row)
    Cells(i, 1) = Trim(Cells(i, 1))

    End Sub
    _____________________________________________________________________


    thxx

    JONNY
     
  4. Hallo JonnyHeart,

    dann probier mal folgendes Makro.

    Gruß Matjes :)
    Code:
    Option Explicit
    Sub LeerzeichenFueherendeUndNachfolgendeAbschneiden()
    
      Dim ws As Worksheet
      Dim lRows As Long, z As Long, x As Long, lLen As Long
      Dim sText As String, sTextKopie As String, lZeichen As String
      
     ->< < < ggf. A N P A S S E N > > >
      Const cSP2 = 2
      Const cBLATTNAME = Tabelle2
     ->< < < A N P A S S E N    E N D E > > >
    
     ->Blatt setzen
      On Error Resume Next
      Set ws = ThisWorkbook.Worksheets(cBLATTNAME)
      On Error GoTo 0
      If ws Is Nothing Then
        MsgBox Blatt-> & cBLATTNAME &-> ist in der Mappe nicht vorhanden.
        GoTo AUFRAEUMEN
      End If
      
     ->letzte Zeile mit Inhalt in cSP2
      lRows = ws.Cells(ws.Rows.Count, cSP2).End(xlUp).Row
      
     ->alle Zellen der Spalte cSP2
      For z = 1 To lRows
       ->nicht leer
        If ws.Cells(z, cSP2).Value <>  Then
          sText = ws.Cells(z, cSP2).Value
         ->Kopie anfertigen
          sTextKopie = sText
          
         ->Leerzeichen am Anfang wegnehmen(auch geschützte Leerzeichen)
          lLen = Len(sText)
          For x = 1 To lLen
            lZeichen = Asc(Mid(sText, 1, 1))
            If lZeichen = 32 Or _
               lZeichen = 160 Then
              sText = Right(sText, Len(sText) - 1)
            Else
              Exit For
            End If
          Next
          
         ->Leerzeichen am Ende wegnehmen(auch geschützte Leerzeichen)
          lLen = Len(sText)
          For x = lLen To 1 Step -1
            lZeichen = Asc(Mid(sText, 1, 1))
            If lZeichen = 32 Or _
               lZeichen = 160 Then
              sText = Left(sText, Len(sText) - 1)
            Else
              Exit For
            End If
          Next
          
         ->Hat sich was geändert ?
          If sText <> sTextKopie Then ws.Cells(z, cSP2).Value = sText
        End If
      Next
      
    AUFRAEUMEN:
      Set ws = Nothing
    End Sub
     
  5. Hallo,

    ich verstehe das Problem nicht richtig.

    Soll der Vergleich jetzt im Makro stattfinden oder im Arbeitsblatt?

    Falls im Arbeitsblatt, kann man folgende Formel verwenden. Dann brauchst Du das Makro zur Anpassung der Zellen nicht mehr:
    Code:
    =WENN(GROSS(GLÄTTEN(A1))=GROSS(GLÄTTEN(B1));Übereinstimmung;Unterschied)
    Falls der Vergleich innerhalb eines Makros geschehen soll, verwende dort eine entsprechende Vergleichsanweisung mit UCASE und TRIM (anstelle von GROSS und GLÄTTEN).

    Die Funktion TRIM bzw. GLÄTTEN schneidet links und rechts die Leerzeichen weg und gibt das, was übrig bleibt, zurück.
    Die Funktion UCASE bzw. GROSS konvertiert alles in Großbuchstaben und gibt das Ergebnis zurück. Somit spielt die Groß- und Kleinschreibung im Vergleich keine Rolle (dann fällt z.B. der Vergleich von kuchen und Kuchen positiv aus).
     
  6. Ola,
    das alte Lied Makro vs. Formel ... ich hätte ja auch die Formel bevorzugt ;)
     
  7. @IrksEye
    Nicht nur vorne und hinten, sondern auch in der Mitte werden mehrere nebeneinanderstehende Leerzeichen zu einem einzigen Leerzeichen zusammengefaßt.

    Formel rulez! ;D
     
  8. Trifft das auf geschützte Leerzeichen auch zu ? Bei geschützten Leerzeichen funktioniert Trim() nämlich auch nicht.

    Diese geschützten Leerzeichen fängt man sich oft ein, wenn HTML-Code importiert wird.

    Gruß Matjes :)
     
  9. Danke, das hab ich bis eben noch nicht gewußt.

    Zu den geschützten Leerzeichen weiß ich nichts. Vermutlich schneidet GLÄTTEN nur die->echten' Leerzeichen (ASCII 32) ab.
     
  10. Ola,
    war mir auch neu, dass Excel die geschützten Leerzeichen einfängt ... ich dachte, die werden gar nicht unterstützt ...
     
Die Seite wird geladen...

Prüfen ob letzte(s) Zeichen in Zelle = Leerzeichen, wenn ja: LÖSCHEN!" - Ähnliche Themen

Forum Datum
Excel: Bereiche auf 'leer' Überprüfen Microsoft Office Suite 15. Sep. 2016
Angularjs | json-Datei auf Veränderung überprüfen und Meldung ausgeben Webentwicklung, Hosting & Programmierung 23. Jan. 2014
bedeutung Zertifikat bei win7 nachprüfen Windows XP Forum 28. Aug. 2013
Programm zum Überprüfen und Aktualisieren meiner Treiber Software: Empfehlungen, Gesuche & Problemlösungen 17. Juni 2012
Usb-Stick - Win7 will immer prüfen Windows XP Forum 6. Juli 2011