niedziela, 23 marca 2014

MAKRO - Usuwanie zbędnych spacji z zaznaczonych komórek

Często zdarza mi się dostać od kogoś plik w którym ktoś na początku lub końcu komórki w tekście wpisał spacje.
Jak się ich pozbyć?

KOD


Sub usunZbedneSpacje()
On Error Resume Next
   Dim komorka As Range          ' zmienna która będzie wskazywała aktualną komórkę
   For Each komorka In Selection ' dla każdej zaznaczonej komórki rób:
                                 ' trim - usuwa białe znaki z obu lewej i prawej tekstu.
      komorka = Trim(komorka)    ' wynik zapisujemy z powrotem do tej samej komórki
   Next komorka                  ' koniec for. Czyli przejdź do następnej komórki
End Sub

KONIEC! Widzisz jakie proste?

A jeśli chcemy coś więcej....

Modyfikacje:

Potrzebujemy usunąć również podwójne spacje ze środka tekstu

wystarczy zamiast funkcji Trim użyć funkcji WorksheetFunction.Trim

czyli linijka może wyglądać tak:
        komorka = WorksheetFunction.Trim(komorka)    

Tutaj użyliśmy funkcji która dodatkowo wszystkie podwójne spacje zamienia na pojedyncze.

Jeśli chcesz usunąć wszystkie spacje z komórek.

        komorka = replace(komorka, " ", "")
Funkcja Replace działa jak znajdź i zamień. Tutaj chcemy, żeby w komórce znalazł wszystkie spacje (" ") i je zlikwidował, czyli zamienił na nic ("")

Jeśli potrzebujemy usunąć spacje z konkretnego zakresu (a nie z zaznaczenia)

Pętla For each jest tak fajna, że możesz użyć jej również w tym przypadku.
Poniżej przykład pętli, która iteruje po wszystkich komórkach z zakresu od A1 do B20 oraz w kolumnie C:

For Each komorka In Range("A1:B20,C:C")

Jeśli masz pytania / uwagi / propozycje jakie makra byłyby Ci potrzebne to pisz w komentarzach