Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Glätten mit VBA

Forumthread: Glätten mit VBA

Glätten mit VBA
WalterK
Hallo,
im Bereich A1:Z20000 möchte ich alle Zellen glätten, es sollen also nur die Leerzeichen gelöscht werden, die am Anfang und am Ende jeder Zelle vorhanden sind. Falls möglich, soll das Ergebnis die alten Zellen überschreiben.
Mein Versuch (siehe unten) klappt jedenfalls nicht:
Option Explicit
Sub Glätten()
ThisWorkbook.Worksheets("Tabelle1").Range(.Cells(1, 1), .Cells(26, 20000)) = WorksheetFunction. _
Trim(ThisWorkbook.Worksheets("Tabelle1").Range(.Cells(1, 1), .Cells(26, 20000)))
End Sub
Besten Dank für die Hilfe, Servus Walter
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Glätten mit VBA
10.07.2012 12:27:19
Rudi
Hallo,
das musst du in einer Schleife Zelle für Zelle machen.
Gruß
Rudi
AW: Glätten mit VBA
10.07.2012 13:29:41
Dieter(Drummer)
Hi Walter,
habe das aus dem Netz und evtl. kannst du damit etwas anfangen:
In ein Modul:
Sub BereichGlaetten()
  'von Klaus "Klausimausi64" Weck
Dim r As Range, c As Range
On Error Resume Next
Set r = Application.InputBox("Bereich markieren, der geglättet werden soll: ", Type:=8)
For Each c In r.Cells
c.Value = Application.WorksheetFunction.Trim(c.Value)
Next c
End Sub

Gruß, Dieter(Drummer)
Anzeige
Zuerst einen Dank an die Helfer, habe...
10.07.2012 15:17:38
WalterK
Hallo,
... eben erst gesehen, dass noch eine Antwort eingetroffen ist.
Inzwischen habe ich auch einen Code im Internet gefunden und ihn für meine Vorhaben anpassen können.
Allerdings ist mir dann aufgefallen, dass nur die Leerzeichen am Ende der Zelleninhalte gelöscht werden, die am Anfang aber nicht.
Was muss ich ändern, dass sowohl die Leerzeichen am Anfang als auch die am Ende gelöscht werden.
Besten Dank und Servus, Walter
Hier noch mein derzeitiger Code:
  • Option Explicit
    Sub BereichGlätten()
    Dim Cell As Range
    Dim strIn As String
    Dim LoLetzte As Long
    LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
    Count)
    Application.ScreenUpdating = False
    For Each Cell In ActiveSheet.Range("A1:T" & LoLetzte) 'Fehlerwerte werden gesucht und  _
    gleich gelöscht
    If IsError(Cell) Then Cell.Clear
    Next Cell
    For Each Cell In ActiveSheet.Range("A1:T" & LoLetzte) 'alle Zellen werden geglättet
    If Not IsEmpty(Cell) Then Cell.Value = RTrim(Cell.Value)
    Next
    Application.ScreenUpdating = True
    End Sub
    

  • Anzeige
    Danke, ist erledigt!
    10.07.2012 15:20:52
    WalterK
    ;

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige