Jednym z największych dobrodziejstw VBA jest możliwość korzystania z funkcji arkuszowych w kodzie makra. Bogata kolekcja funkcji Excela (VBA również posiada własny zbiór) pozwala programiście dodawać skomplikowane formuły i przetwarzać szybko dane.
Wstawianie Formuł
Dzisiaj chciałbym napisać kilka słów na temat wstawiania formuły do większego zakresu komórek tj. do kolumny.
W obu przypadkach sprawdzam czy komórka z kolumny A jest pusta.
Powyższy screen pokazuje efekt po wprowadzeniu formuły zwykłej do zakresu komórek (kolumna B) i efekt po wprowadzeniu formuły tablicowej (kolumna C). Obie formuły dają taki sam wynik.
Kod Makra
Kod wykonujący każdą czynność zawiera się w jednej linijce, co jeszcze bardziej potwierdza, że wprowadzanie formuł makrem jest prostą i fantastyczną sprawą.
Sub InsertFormulaToCells()
'Wstaw zwykłą formułę do dziewięciu komórek naraz
Sheet1.Range("B2:B10").FormulaR1C1 = "=ISBLANK(RC1)"
'Wstaw formułę tablicową do dziewięciu komórek naraz
Sheet1.Range("C2:C10").FormulaArray = "=ISBLANK(R2C1:R10C1)"
End Sub
Formuła Zwykła
W pierwszym przypadku gdy wprowadzamy formułę zwykłą do zakresu B2:B10 możemy odwołać się do nieco przestarzałej, ale rewelacyjnej notacji R1C1.
Dzięki takiemu podejściu możemy wprowadzić jedną formułę do obszernego zakresu komórek! Tak, tylko jedną – bez konieczności jej modyfikowania.
Idealnie widać to wtedy, gdy zmienimy sposób wyświetlania odwołań w arkuszu z tradycyjnego A1 właśnie na R1C1. Zobaczymy wtedy, że w zakresie B2:B10 znajduje się taka sama formuła.
Formuła Tablicowa
W drugim przypadku także zastosowałem notację R1C1. Tym razem jednak wynik zwracany jest w postaci tablicy do zakresu komórek C2:C10.
W takiej sytuacji trzeba poinformować Excela, że jest to formuła tablicowa i należy skorzystać z właściwości FormulaArray, a Excel sam wstawi klamry {…}.