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
2 | A = Application.Sum(Range( "A1:A2" )) |
3 | A = WorksheetFunction.Sum(Range( "A1:A2" )) |
Alternatywnie podobną operację wykonamy z pomocą metody Evaluate:
1 | A = Evaluate( "sum(A1:A2)" ) |
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:
1 | A = [3+sum(A1:a2)+10+Sin(90)] |
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:
2 | Evaluate( "B1:B2" ). Select |
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