Łączenie tekstów to powszechne działanie w VBA. Teoretycznie do dyspozycji mamy dwa znaki złączające: ampersand: & oraz plus:+. W praktyce jednak nie każdy zdaje sobie sprawę z faktu, że w pewnych okolicznościach zamienne zastosowanie łączników da odmienne wyniki. I choć zagadnienie to dotyczy szczególnie operacji w środowisku Access VBA myślę, że warto pamiętać o różnicach szczególnie gdy pracować będziemy ze zmiennymi.
Ampersand łączyć będzie tekst w każdych okolicznościach i niezależnie od bieżącej wartości przechowywanej w zmiennej.
Plus łączyć będzie teksty tak długo jak zmienne będą przechowywać jakąkolwiek wartość, jeżeli jednak jedna ze zmiennych przechowywać będzie wartość Null to wynikiem złączenia z wykorzystaniem operatora plus również będzie Null.
Różnicę w działaniu operatorów najprościej będzie zaprezentować na poniższym przykładzie gdzie wykorzystane zostały znaki łączenia tekstu w pracy ze zmiennymi, w tym ze zmienną o wartości Null.
poniedziałek, 2 lutego 2015
piątek, 30 stycznia 2015
Pętla w oknie Immediate
Myślę, że każdy programista zna i używa okna Immediate w środowisku IDE (Integrated Development Editor) w swojej codziennej pracy. Myślę też jednak, że nie każdy wie, iż w oknie immediate można wykonywać nie tylko pojedyncze instrukcje, ale także zestaw instrukcji złożonych, do których zaliczyć można pętle czy też instrukcje warunkowe.
Wyobraźmy sobie, że naszym celem jest wykonanie następujących operacji:
Każdą z tych operacji możemy wykonać tworząc odpowiednie procedury, tyle tylko, że w tym celu musimy:
Przyznam, że to dość dużo operacji jak na jednorazową akcję wykonaną dla kolekcji obiektów.
Tymczasem okazuje się, że wystarczy nam okno Immediate, w którym wpisujemy wszystkie niezbędne instrukcje rozdzielając je dwukropkiem. Dwukropek, zresztą nie tylko w oknie Immediate, jest symbolem zakończenia linii instrukcji. Przyjrzyjmy się przykładom dla w/w wybranych przypadków. Na co warto zwrócić uwagę korzystając z tej techniki:
Wyobraźmy sobie, że naszym celem jest wykonanie następujących operacji:
- wstawienie formuły zaokrąglającej do szeregu komórek zawierającej wartości
- odkrycie wszystkich (ukrytych) arkuszy
- usunięcie wartości mniejszych od zera
- itp.
Każdą z tych operacji możemy wykonać tworząc odpowiednie procedury, tyle tylko, że w tym celu musimy:
- utworzyć moduł
- rozpocząć procedurę Sub
- zadeklarować zmienne
- zamknąć procedurę
- uruchomić ją.
Przyznam, że to dość dużo operacji jak na jednorazową akcję wykonaną dla kolekcji obiektów.
Tymczasem okazuje się, że wystarczy nam okno Immediate, w którym wpisujemy wszystkie niezbędne instrukcje rozdzielając je dwukropkiem. Dwukropek, zresztą nie tylko w oknie Immediate, jest symbolem zakończenia linii instrukcji. Przyjrzyjmy się przykładom dla w/w wybranych przypadków. Na co warto zwrócić uwagę korzystając z tej techniki:
- deklaracja zmiennych nie jest wymagana, wręcz nie jest możliwa w oknie Immediate
- z powodu braku deklaracji zmiennych niezbędna może być pełna deklaracja właściwości i kolekcji, np. Selection.Cells zamiast samego Selection, cell.value zamiast samego cell
- zapis instrukcji z małych/wielkich liter nie ma znaczenia, IntelliSense w tym aspekcie nie działa w oknie Immediate
- teoretycznie dopuszczalny jest zapis wieloliniowy jednak odbywa się to z wykorzystaniem znaku przeniesienia linii (symbolu underscore):
Subskrybuj:
Posty (Atom)