| Termin | Definicja |
|---|---|
| Set | Set to instrukcja VBA przypisująca zmiennej referencję do obiektu zamiast prostej wartości. Set w VBA – czym jest przypisanie obiektuSet w języku VBA służy do przypisywania zmiennej odwołania do obiektu. Dzięki temu zmienna nie przechowuje jedynie tekstu, liczby ani wartości logicznej, lecz wskazuje na konkretny element środowiska programu, na przykład arkusz, skoroszyt, zakres komórek, formularz, kolekcję albo obiekt systemu plików. Jest to istotna różnica, ponieważ obiekt posiada własne właściwości, metody i relacje z innymi elementami aplikacji. Przykładowa instrukcja może wyglądać następująco:
W tym zapisie zmienna Instrukcja Set występuje przed wyrażeniem zwracającym obiekt. Samo przypisanie może mieć postać krótką, ale jego znaczenie zależy od typu zmiennej. Najczęściej używa się deklaracji
Od tej chwili można stosować zapis Set a zwykłe przypisanie wartości i porównania w VBAW VBA operator przypisania bez słowa Set stosuje się zwykle do danych prostych, takich jak liczby, napisy, daty i wartości logiczne. Przykład Różnicę można przedstawić na dwóch przykładach:
Pierwsza zmienna przechowuje wartość tekstową. Druga wskazuje na obiekt typu Worksheet, który udostępnia między innymi kolekcję komórek, właściwości nazwy i widoczności oraz metody związane z arkuszem. Próba przypisania obiektu w sposób przeznaczony dla wartości prostych może zakończyć się błędem kompilacji albo błędnym działaniem procedury. Warto odróżnić również obiekt od właściwości obiektu. Instrukcja Podobny mechanizm pojawia się przy pracy ze skoroszytami, formularzami użytkownika, obiektami wykresów, folderami i plikami. Referencja pozwala zachować jednoznaczny punkt odniesienia, ale nie zmienia samego obiektu. Jeżeli arkusz zostanie zmodyfikowany przez inną procedurę, zmienna nadal wskazuje ten sam arkusz, o ile obiekt nie został usunięty lub zamknięty. Set i typowe problemy z referencjami obiektówJednym z częstych problemów jest pominięcie słowa Set przy przypisywaniu obiektu. Kod może wtedy zgłosić błąd „Object required” albo „Object variable or With block variable not set”, zależnie od sytuacji i dalszego użycia zmiennej. Szczególnej uwagi wymaga deklarowanie typu. Zmienna zadeklarowana jako Inny problem powstaje, gdy referencja nie została ustawiona przed użyciem. Przykład:
W tym fragmencie zmienna Źródłem błędów bywa także niejednoznaczne używanie
Trzeba też pamiętać, że zamknięcie skoroszytu, usunięcie arkusza albo skasowanie pliku może sprawić, że dalsze operacje na referencji przestaną być prawidłowe. W dłuższych procedurach przydatne jest sprawdzanie, czy obiekt został ustawiony, oraz obsługa błędów związanych z brakiem wskazanego arkusza lub pliku. Po zakończeniu pracy można zwolnić referencję przez Set w praktyce – wskazówki dla kodu VBAPrzy budowaniu makra dobrze jest najpierw określić, z jakim rodzajem obiektu będzie wykonywana praca. Następnie można zadeklarować zmienną o konkretnym typie i przypisać jej referencję. Wczesne deklarowanie, takie jak Przydatne jest stosowanie pełnych kwalifikacji obiektów. Zapis
W konstrukcji
Ważne jest odróżnianie przypisania referencji od przypisania właściwości. Gdy celem jest zmiana nazwy arkusza, używa się Podczas testów warto uruchamiać procedurę krokowo, obserwować wartości zmiennych w oknie lokalnym i sprawdzać, do którego skoroszytu lub arkusza prowadzi dana referencja. Szczególnie przydatne jest kontrolowanie nazw obiektów, gdy pliki powstają na podstawie kopii, szablonów lub danych importowanych z innych źródeł. Set w skoroszycie – kiedy potrzebna jest pomoc serwisuProblemy z makrami VBA nie zawsze wynikają z samej składni Set. Przyczyną może być uszkodzony skoroszyt, nieprawidłowo działający dodatek, wyłączone makra, blokada pliku, konflikt wersji pakietu biurowego albo błąd systemu plików. Jeżeli procedura przestaje działać po zmianie komputera, aktualizacji oprogramowania lub przeniesieniu pliku, pomocne jest zachowanie kopii dokumentu, treści komunikatu i informacji o momencie wystąpienia problemu. Do serwisu warto zgłosić się wtedy, gdy nie można otworzyć pliku zawierającego makra, aplikacja zamyka się podczas wykonywania kodu, arkusze nie zapisują zmian albo problem powtarza się również w innych dokumentach. Przed przekazaniem pliku dobrze jest usunąć dane, które nie są potrzebne do diagnostyki, oraz zachować kopię zapasową. W przypadku Warszawskiego Pogotowia Komputerowego 24/7 naprawy są z reguły realizowane do 3 dni roboczych, co może ułatwić szybkie przywrócenie sprawnego środowiska pracy z dokumentami i makrami. Jeżeli błąd dotyczy wyłącznie konkretnej instrukcji, przydatne będzie przekazanie krótkiego fragmentu kodu wraz z opisem oczekiwanego rezultatu. Jeżeli natomiast pojawiają się również problemy z uruchamianiem programu, dostępem do plików, stabilnością systemu lub zapisem danych, potrzebna może być szersza diagnoza komputera. W obu przypadkach dokładny opis objawów pomaga rozdzielić błąd programistyczny od problemu technicznego urządzenia lub środowiska, w którym wykonywany jest kod VBA. |