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





























