• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Voorloop spaties wissen (macro)

Status
Niet open voor verdere reacties.

etimm

Gebruiker
Lid geworden
25 okt 2011
Berichten
50
Ik heb de volgende code om (voorloop) spaties te verwijderen:

Code:
Sub Spatiesverwijderen()
    Dim MyCell As Range
    On Error Resume Next
        Selection.Cells.SpecialCells(xlCellTypeConstants, 23).Select

        For Each MyCell In Selection.Cells
            MyCell.Value = LTrim(MyCell.Value)
        Next
    On Error GoTo 0
End Sub
Dit werkt erg goed wanneer ik eerst een aantal cellen selecteer en vervolgens de macro start.
Is het mogelijk om van te voren op te geven voor welke selectie de macro uitgevoerd moet worden? (bijvoorbeeld cell B5 t/m B20.) Ik wil voorkomen dat er fouten gemaakt worden bij de selectie.
(je kan immers niet meer terug nadat een macro iets heeft gewijzigd.)
 
Met deze aanpassing doet hij het steeds voor het bereik B5:B20:

Code:
Sub Spatiesverwijderen()
    Dim MyCell As Range
    On Error Resume Next
        [COLOR="red"][B]Range("B5:B20")[/B][/COLOR].Cells.SpecialCells(xlCellTypeConstants, 23).Select

        For Each MyCell In Selection.Cells
            MyCell.Value = LTrim(MyCell.Value)
        Next
    On Error GoTo 0
End Sub
 
Met deze aanpassing doet hij het steeds voor het bereik B5:B20:

Code:
Sub Spatiesverwijderen()
    Dim MyCell As Range
    On Error Resume Next
        [COLOR="red"][B]Range("B5:B20")[/B][/COLOR].Cells.SpecialCells(xlCellTypeConstants, 23).Select

        For Each MyCell In Selection.Cells
            MyCell.Value = LTrim(MyCell.Value)
        Next
    On Error GoTo 0
End Sub

Zo simpel :rolleyes: Je wil niet weten wat ik allemaal heb geprobeert. Heel erg bedankt!
 
Ik ben toch nog even verder gegaan met zoeken naar een snellere oplossing:

Oplossing:
Code:
Spatiesverwijderen()
    Columns("B:B").Replace What:=" ", Replacement:=""
End Sub

Deze code werkt vele male sneller dan de vorige code. LET OP: Deze verwijderd wel álle spaties in een cel. Dus niet alleen de voorloop spaties!
 
Waarom dan niet:
Code:
Sub Spatiesverwijderen()
    [B:B] = Application.Trim([B:B])
End Sub
Als je overigens het bereik reduceert, wordt de code ook sneller. Geef een naam met de volgende verwijzing:
Code:
=indirect("Sheet1!$B1:$B"&aantalarg(Sheet1!$B:$B))
en je krijgt
Code:
Sub Spatiesverwijderen()
    [B:B] = Application.Trim([trimmen])
End Sub
 
Laatst bewerkt:
Gert,

Klopt. Ik had niet meer creativiteit dan dit woord.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan