Jeśli chcesz zamienić kropkę na przecinek za pomocą VBA natkniesz się na pewien problem w polskojęzycznym Excelu.
Często powtarzam, że jeśli nie wiesz jak coś zrobić/napisać w VBA, ale wiesz jak to zrobić w Excelu, to zarejestruj sobie makro, tego co robisz w Excelu, a później analizuj kod. Sprawdza się to w większości sytuacji. Tak też zrobimy teraz, czyli najpierw zarejestrujemy makro, gdzie w Excelu za pomocą opcji Zamień zmienimy kropkę na przecinek, a dopiero później sprawdzimy jak działa zarejestrowany kod VBA.
Do opcji Zamień najszybciej dojdziesz naciskając skrót klawiszowy Ctrl + H, potem wypełniasz odpowiednio pola (Znajdź – kropka, Zamień na – przecinek) i klikasz przycisk Zamień wszystko.

vba-16-jak-zamienic-kropke-na-przecinek-01

Teraz trzeba sprawdzić czy uruchomienie zarejestrowanego kodu zadziała.

vba-16-jak-zamienic-kropke-na-przecinek-02

Okazuje się, że nie do końca, bo w niektórych przypadkach może w ogóle nie dokonać zmiany, a w innych znaki się zmienią, ale liczby nie zostaną poprawnie rozpoznane przez Excela (są wyrównane do lewej).

Musisz pamiętać, że edytor VBA jest angielskojęzyczny, co się wiąże również z tym, że część całkowita jest oddzielona od części dziesiętnej liczby kropką, a nie przecinkiem jak w polskim Excelu. Dlatego w kodzie VBA musisz zrobić dziwną rzecz – zamienić kropkę na kropkę. Resztę zrobią ("przetłumaczą") ustawienia regionalne.

Tym razem zmiana dokonała się poprawnie.

vba-16-jak-zamienic-kropke-na-przecinek-03

Dlatego pamiętaj o tym, że edytor VBA zawsze "mówi" po angielsku, a Excel różnie w zależności od wersji językowej. Z tych różnic wynikają podobne różne dziwne kody.

Sub KropkaPrzecinek() Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False

End Sub

Chcesz ze mną poznać możliwości VBA? Zobacz kiedy planowana jest następna edycja 30dniowego kursu online:
http://excelw30dni.pl/kategoria-produktu/szkolenia-vba/

Pozdrawiam
Adam Kopeć
Miłośnik Excela