Makro usuwające spacje z napisu, pozostawiające format tekstowy

8-Kwi-2011

Jak tylko mogę, staram się dotrzymać obietnicy. Tym razem na szkoleniu zapytano mnie o makroVBA w Excelu, które z zaznaczonego obszaru komórek pousuwa zbędne spacje, ale nie zgubi przy tym początkowych zer (zachowa format tekstowy). Dlaczego powinno to być makro a nie formuła Podstaw, to długa historia.

Oto rozwiązanie:

Sub UsunSpacje()
     On Error Resume Next
     For Each cell In Range(Selection.Address())
          cell.NumberFormat = "@"
          cell.Value = Application.WorksheetFunction.Substitute(cell.Value, " ", "")
     Next cell
End Sub
  • Polecenie On Error Resume Next kontynuuje wykonanie makra, nawet gdyby doszło do jakiś błędów.
  • Linijka For Each cell In Range(Selection.Address()) powoduje przejście przez każdą komórkę zaznaczonego obszaru
  • cell.NumberFormat = „@” zmienia format komórki na tekstowy
  • cell.Value = Application.WorksheetFunction.Substitute(cell.Value, ” „, „”), to nic innego jak wyliczenie wartości funkcji Podstaw zmieniającej znak spacji na pusty napis i przypisanie zwracanej wartości do komórki
  • Next cell – zamyka linijkę For Each… przechodząc do kolejnej komórki z zaznaczonego obszaru

Dodaj komentarz:

Autor: Rafał Kraik