Przeliczanie danych w Excelu zwykle odbywa się w sposób automatyczny lub ręczny. Jednorazowo możemy przeliczyć wszystkie otwarte pliki, a nawet pojedyncze arkusze. Z poziomu VBA możemy zrobić jeszcze jedną rzecz – przeliczyć zakres komórek. Jak? O tym dowiesz się z tego tekstu.
Przeliczanie automatyczne i ręczne
W zdecydowanej większości przypadków mamy do czynienia z przeliczaniem automatycznym. Jest to rozwiązanie bardziej komfortowe. Zawsze widzimy prawidłowe wyniki formuł ponieważ przeliczają się na bieżąco.
Drugie podejście stosuje się bardzo rzadko – głównie tam, gdzie mamy do czynienia z bardzo rozbudowanymi plikami. W takiej sytuacji, każde przeliczenie formuł trwa bardzo długo i jest to niewątpliwie dość irytujące.
Calculation dotyczy Application
Tryb przeliczania danych możemy ustawić poprzez właściwość Calculation. Co ciekawe, dotyczy ona obiektu Application, a nie Workbook jak mogłoby się wydawać.
Jeżeli mamy dwa pliki i w pierwszym przeliczanie ustawiliśmy na ręczne, zaś w drugim na automatyczne, to otwierając oba pliki przeliczanie będzie w nich takie same. Jakie? To zależy od tego, który plik otworzyliśmy jako pierwszy.
Jednorazowe przeliczenie
Oprócz właściwości Calculation, która pozwala zarządzać nad trybem przeliczania – mamy również metodę Calculate, która pozwala nam przeliczyć dane jednorazowo, niejako „na żądanie”.
Przeliczenie może dotyczyć:
- Całej aplikacji (czyli wszystkich otwartych w danej sesji plików – popularne F9).
- Pojedynczego arkusza (Ctrl + F9).
- Wybranego zakresu komórek (opcja dostępna jedynie z poziomu VBA).
Od wersji 2013 wszystkie pliki Excela są otwierane w tej samej sesji. W wersjach wcześniejszych mogliśmy uruchomić nową sesję Excela klikając w skrót do programu Excel.
Przeliczenie zakresu komórek
Wyobraźmy sobie, że liczymy cenę z VAT dla kilku produktów – domyślnie podatek wynosi 0%
W tym miejscu musimy się upewnić, że dane są przeliczane w sposób ręczny (Application.Calculation = xlCalculationManual)
Następnie wprowadzamy wartość podatku VAT -> 23% – chcemy jednak przeliczyć tylko ceny produktów nr 1 i 2.
Klikamy przycisk na samym dole i otrzymujemy nowe ceny z VAT dla produktów nr 1 i 2, i niezmienione ceny dla produktów 3 i 4.
Pod przycisk zostało podpięliśmy bardzo krótkie makro PrzeliczCenyWybranychProduktow(), które wygląda tak:
1 2 3 4 5 |
Sub PrzeliczCenyWybranychProduktow() Arkusz1.Range("D3:D4").Calculate End Sub |