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