Kategorie powiązane:

Jak napisać własną funkcję VBA dla Excela

HintMine

Jak napisać własną funkcję VBA dla Excela? Po co pisze się funkcje użytkownika? Czy pisanie swoich funkcji w Excelu jest trudne?

 

Jeżeli zaintrygowały was powyższe pytania, zapraszam do lektury :)

 

Chciałem stworzyć temat który będzie jasny, prosty i zrozumiały nawet dla osób które nigdy nie miały do czynienia z makrami VBA dlatego jako temat funkcji do napisania wybrałem coś prostego. Ciekawsze funkcje które na prawdę wykraczają poza to co można zrobić formułami Excela pojawią się nieco później :)
Chcę stworzyć funkcję, która zamieni pierwszą literę dowolnego wskazanego tekstu na dużą a wszystkie pozostałe na małe :) i Nie chodzi mi tutaj o zastosowanie formuły Z.WIELKIEJ.LITERY bo ona zamieni nam pierwszą literę KAŻDEGO wyrazu w zdaniu/wyrażeniu na dużą… a nam chodzi o coś innego :)

 

Ktoś mógłby teraz powiedzieć „ale to można przecież zrobić formułami Excela” klecąc zlepek Lewy, Prawy, Dł, LITERY.MAŁE, LITERY.WIELKIE itd. OCZYWIŚCIE ŻE TAK! ale stworzenie własnej funkcji VBA ma swoje ogromne zalety:

 

a) możemy w łatwy sposób skorzystać z funkcji w każdym arkuszu Excela (a przy odrobinie pracy również w dowolnym pliku Excela)
b) możemy znacznie uprościć pozagnieżdżane i poplątane formuły dzięki odrobinie kodu VBA
c) upraszczamy życie użytkowników Excela, bo zamiast uczyć się mnóstwa excelowych formuł, zagnieżdżać je i mieszać ze sobą wystarczy, że skorzystają z naszej funkcji, podadzą argumenty i już :)
d) możemy skorzystać z elementów VBA niedostępnych dla zwykłych formuł czyli pętli, tablic, zewnętrznych bibliotek itd.
e) pewnie jeszcze całe mnóstwo innych zalet które teraz na szybko nie przyszły mi do głowy ale będę je sukcesywnie dopisywał ;)

 

Skoro wiemy już dlaczego warto nauczyć się pisać własne funkcje w VBA to ZACZYNAMY!

 

W tym poście dowiesz się:
1. jak wejść do edytora VBA?
2. jak dodać moduł?
3. jak tworzy się funkcję w języku VBA?
4. jak wywołać własną funkcję w arkuszu?

 

Ok najpierw musimy oczywiście wejść do edytora VBA. Jak to zrobić? Wciskamy skrót klawiszowy „Alt+F11” i oczom naszym powinien ukazać się taki widok

Jak komuś wyświetlił się cały szary ekran bez żadnych okien, to nie wpadamy w panikę, nie ma to w naszym przypadku żadnego znaczenia.

 

Teraz musimy dodać moduł żeby mieć miejsce, w którym napiszemy nasz kod. Klikamy więc w menu Insert–>Module

 

I powinniśmy zobaczyć taki obraz

Jak mamy moduł, możemy zabrać się za pisanie kodu :) Jak zaintrygował Was tekst „Option Explicit”, który widać na zdjęciu na samej gorze ekranu (bo u Was go nie ma), to… ten moment nie musicie się tym przejmować ale dociekliwym polecam wam lekturę mojego wpisu o ustawieniach modułu :)

 

No to zaczynamy pisanie.

 

Żeby rozpocząć funkcję piszemy słowo „Function” a później podajemy nazwę naszej funkcji np. „zamieniaczka”. Ale to nie wszystko.

 

Jeżeli nasz program ma działać tak jak każda szanująca się formuła Excela, to użytkownik powinien mieć możliwość podania/wskazania tekstu który nasz program będzie ładnie zamieniał.

 

Po nazwie funkcji otwieramy więc nawias „(” i wpisujemy nazwę, do której ta podana przez użytkownika wartość zostanie przypisana.

 

Strasznie dużo tego gadania/pisania a tak na prawdę chodzi o coś takiego:

 

Zwróćcie uwagę że po zamknięciu nawiasu i naciśnięciu Enter sam edytor dopisał nam na dole kod zamykający funkcję czyli:

 

Tak na prawdę to już prawie koniec :)

 

Pozostaje jeszcze tylko napisanie silnika naszej funkcji czyli samego kodu zamieniającego tekst, który użytkownik „wrzuci” do zmiennej „tekscik” korzystając z naszej funkcji w Excelu.

 

Wymyśliłem sobie taki algorytm:
1. Za pomocą funkcji Left biorę pierwszy znak z tekstu podanego przez użytkownika
2. Używam funkcji Ucase żeby zamienić tą pobraną w 1 kroku literę na dużą
3. Za pomocą Mid pobiorę sobie całą resztę tekstu (czyli od 2 znaku do końca tekstu)
4. I dzięki funkcji Lcase zamienię tą resztę tekstu na małe litery

 

A w kodzie wygląda to tak:

 

Czyli cała działająca funkcja wygląda tak:

 

Ostatni krok to informacja jak tą funkcję wywołać w Excelu. Wchodzimy do arkusza wpisujemy w komórce „=” zaczynamy pisać nazwę naszej funkcji „=za” i…

 

jak na liście zobaczycie naszą „zamieniaczka” to klikamy/wskazujemy ją i naciskamy klawisz „TAB” sprawi to że cała funkcja się douzupełni a po jej nazwie otworzy się nawias. Teraz wystarczy już tylko wskazać komórkę z tekstem do zamienienia i voila :)

 

A  jak przeczytacie posta jak tworzyć add-in do Excela to dowiecie się jak sprawić, żeby waszą funkcję dało się uruchamiać WSZĘDZIE w każdym pliku Excela… (nawet takim czystym pustym nowym :) Jeżeli ktoś z Was coś już „czuje” z VBA to może pomyśleć „ale po co mam tworzyć add-ina jak mogę skorzystać z Personala?” Ano po to, że wywołanie własnej funkcji ze skoroszytu makr osobistych wcale nie jest takie intuicyjne (nie wystarczy wpisać w komórce „=” i zacząć pisać nazwę funkcji… ale o tym będzie w kolejnym poście :)

 

Pozdrawiam i czekam na wasze opinie/pytania :)

Powrót do:
Blog VBA | Podstawy VBA |


Zobacz też: