wtorek, 7 stycznia 2014

Evaluate czyli... (1/2)

Zgodnie ze słownikową definicją 'evaluate' znaczy 'oceniać, szacować'. Zgodnie z definicją metody Evaluate języka VBA dodać należy do polskich odpowiedników także słowo 'konwertować, zamieniać'. A czym w praktyce jest metoda Evaluate i w jakich przypadkach warto i należy po nią sięgnąć? Spójrzmy na tą metodę przez pryzmat przykładów.

1. Zwracanie wyniku funkcji arkuszowych i obliczeń matematycznych
Z pewnością znany jest czytelnikom dostęp do funkcji arkuszowych z wykorzystaniem obiektu WorksheetFunction. Poniższe zapisy zwracają wartość sumy dla obszaru A1:A2

Alternatywnie podobną operację wykonamy z pomocą metody Evaluate:


Wobec faktu, że nawiasy kwadratowe są odpowiednikiem instrukcji Evaluate także i ten zapis będzie odpowiadał powyższemu przykładowi:


Skoro zaś Evaluate dokonuje obliczeń matematycznych dlatego też możemy rozszerzyć nasz powyższy przykład:

2. Odwołanie do zakresu komórek- konwersja tekstu na obiekt
Metoda Evaluate pozwala na stosowanie krótkiego zapisu adresu komórek. Poniższe trzy odwołania są poprawne:

Co ciekawe, zgodnie z informacjami znajdującymi się w sieci ostatnie z odwołań należy do najbardziej efektywnych (najszybszych). Podobnie zresztą metody Evaluate wykona szybciej obliczenia w porównaniu do zastosowania obiektu WorksheetFunction z przykładu 1.

Evaluate możemy również wykorzystać w pracy z obszarami nazwanymi. Oto przykłady zarówno w odniesieniu do wykonywania obliczeń jak i pracy z zaznaczeniem.


W sieci znaleźć można szereg opinii na temat tego, że instrukcja Evaluate nie jest...doceniana. Chyba się z tym zgodzę i przyznam, że sam niezmiernie rzadko z niej korzystam. Nie sposób jednak nie wiedzieć o jej istnieniu. Z pewnością należy mieć też na uwadze, że wprowadzenie skróconego zapisu opartego o kwadratowe nawiasy może nie być czytelne dla szeregu początkujących programistów. Warto pokusić się o odpowiedni komentarz w naszym kodzie przy pierwszym wystąpieniu skróconego zapisu metody Evaluate.

Metoda Evaluate ma jeszcze jedno ciekawe i zaskakujący wykorzystanie. Ale o tym w osobnym- kolejnym- poście...

Brak komentarzy:

Prześlij komentarz