VBA - Ersetzen

Bild

Betrifft: VBA - Ersetzen
von: WalterK
Geschrieben am: 01.06.2015 14:21:21

Hallo,
der folgende Code soll Zellen, in denen nur ein(1) "." oder nur ein(1) "-" oder nur die Zeichenfolge "--" oder nur die Zeichenfolge "---" vorhanden ist leeren und ein (1) Leerzeichen einfügen. Das funktioniert soweit.
Kann man den Code auch einfacher schreiben damit er dann vielleicht auch schneller läuft?

Option Explicit
Sub ZellenMitPunktuswLöschen()
    Dim i As Long
    Dim j As Long
    Dim LzA As Long
    Dim LCol2 As Long
    LzA = Application.Max(3, Cells(Rows.Count, 1).End(xlUp).Row)
    LCol2 = Cells(2, Columns.Count).End(xlToLeft).Column
    
    For j = 1 To LCol2
        For i = 1 To LzA
            If Cells(2 + i, j) = "." Then
                Cells(2 + i, j) = " "
            End If
        Next i
    Next j
    
    For j = 1 To LCol2
        For i = 1 To LzA
            If Cells(2 + i, j) = "-" Then
                Cells(2 + i, j) = " "
            End If
        Next i
    Next j
    
    For j = 1 To LCol2
        For i = 1 To LzA
            If Cells(2 + i, j) = "--" Then
                Cells(2 + i, j) = " "
            End If
        Next i
    Next j
    
    For j = 1 To LCol2
        For i = 1 To LzA
            If Cells(2 + i, j) = "---" Then
                Cells(2 + i, j) = " "
            End If
        Next i
    Next j
        
    
End Sub
Danke und Servus, Walter

Bild

Betrifft: AW: VBA - Ersetzen
von: Hajo_Zi
Geschrieben am: 01.06.2015 14:25:04
Hallo Walter,

Option Explicit
Sub ZellenMitPunktuswLöschen()
    Dim i As Long
    Dim j As Long
    Dim LzA As Long
    Dim LCol2 As Long
    LzA = Application.Max(3, Cells(Rows.Count, 1).End(xlUp).Row)
    LCol2 = Cells(2, Columns.Count).End(xlToLeft).Column
    For j = 1 To LCol2
        For i = 1 To LzA
            If Cells(2 + i, j) = "." Or Cells(2 + i, j) = "-" _
                Or Cells(2 + i, j) = "--" Or Cells(2 + i, j) = "---" Then
                Cells(2 + i, j) = " "
            End If
        Next i
    Next j
End Sub


Bild

Betrifft: Besten Dank Hajo. Servus, Walter
von: WalterK
Geschrieben am: 01.06.2015 14:40:38


Bild

Betrifft: AW: VBA - Ersetzen
von: Daniel
Geschrieben am: 01.06.2015 14:51:14
Hi
nutze doch die Ersetzen-Funktion von Excel, die darf man auch in VBA verwenden:

Sub Ersetzen1()
With ActiveSheet.UsedRange
    .Replace ".", " ", xlWhole
    .Replace "-", " ", xlWhole
    .Replace "--", " ", xlWhole
    .Replace "---", " ", xlWhole
End With
End Sub
oder mit etwas weniger Schreibaufwand mit einer Schleife:
Sub Ersetzen2()
Dim X
With ActiveSheet.UsedRange
For Each X In Array(".", "-", "--", "---")
    .Replace X, " ", xlWhole
Next
end with
End Sub
Gruß Daniel

Bild

Betrifft: AW: VBA - Ersetzen
von: WalterK
Geschrieben am: 01.06.2015 15:57:11
Hallo Daniel,
das war auch mein erster Ansatz.
Allerdings wird dann z.B. aus 31.12.2012 31122012 und das ist dann kein Datum mehr.
Danke und Servus, Walter

Bild

Betrifft: AW: VBA - Ersetzen
von: Daniel
Geschrieben am: 01.06.2015 16:45:05
Hi
du irrst.
ich habe den Parameter LookAt:=xlwhole gesetzt, (entspricht in Excel dem "gesamten Zellinhalt vergleichen") und damit werden dann nur Zellen ersetzt, die genau diese Zeichen enthalten.
kommen noch andere Zeichen hinzu, werden diese Zellen nicht verändert.
hast du mein Marko mal ausprobiert bevor du geantwortet hast?
Gruß Daniel

Bild

Betrifft: AW: VBA - Ersetzen
von: WalterK
Geschrieben am: 01.06.2015 16:51:25
Hallo Daniel,
Du hast Recht, Deine beiden Varianten funktionieren auch.
Danke und Servus, Walter

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA - Ersetzen"