Nowa wersja AET VBE Tools

Andrew Engwirda właśnie opublikował nową wersję AET VBE Tools. Być może, jest to dobra okazja, żeby się zapoznać z tym ciekawym zestawem narzędzi ułatwiających pracę w VBE. Dodatek można znaleźć tutaj.

Po migracji Blogger – WordPress

Chociaż czeka mnie jeszcze przeglądanie/porządkowanie jakieś setki postów, transfer można jednak uznać za zakończony. Jeżeli coś nie działa, będę wdzięczny za komentarze. Poniżej wymieniłem wprowadzone nowe elementy/funkcje oraz kilka wniosków po transferze.

  • Nowe logo.
  • Nowy, czytelniejszy układ strony
  • Kod będzie teraz formatowany jak poniżej.
  • Czytaj więcej...

    Zmiany, zmiany, zmiany

    Aktualizacja piątek:

    Jak widać, blog jest już przeniesiony. Zajmie jednak jeszcze niego czasu wprowadzenie wszystkich poprawek.

    Aktualizacja czwartek:
    Dodawanie komentarzy zostało zablokowane do końca tygodnia.

    Co się dzieje?

    W nocy z piątku na sobotę blog będzie niedostępny/ trudno dostępny/rozsypany.

    Dlaczego?

    W celu zwiększenia satysfakcji czytelników .. bla bla przenoszę blog z platformy Blogger na WordPress. Da to możliwość dostarczenia wielu nowych ciekawych funkcji. Planów mam w każdym razie całą górę. Czytaj więcej...

    Kurs VBA – Klasy – Metody

    Metody są różnymi działaniami, które może wykonywać modelowana przez naszą klasę rzecz. Modelując samochód możemy dać mu metody:
    • hamuj
    • przyspieszaj
    • włącz światła
    • wyłącz swiątła
    • otwórz bagażnik
    • itd.

    Oczywiście w praktyce nie będziemy modelować samochodu. Bardziej praktyczna klasa może służyć do zapisywania danych do pliku. Metody w takiej klasie mogą wyglądać tak:

     

    Mamy powyżej funkcje otwierającą plik, zapisującą do niego itd. W tym modelu jeden obiekt to jeden plik. Jeżeli chcemy otworzyć nowy plik, musimy zainicjować nowy obiekt naszej klasy. Możemy stworzyć kolekcję plików itd.

    Jak widać metody definiuje się tak samo jak procedury i funkcje w tradycyjnym module. Metody oznaczone jako Private mogą być wywoływane tylko przez inne metody danej klasy. Czytaj więcej...

    Kurs VBA – Klasy – Tworzenie i inicjalizacja

    W tej części kursu zobaczymy jak tworzyć i używać klasy. Nie będę się wdawał w szczegóły, które poznacie w kolejnych postach. Chciałbym abyście byli przygotowani do (technicznie) swobodnego tworzenia i używania klas, aby stosować elementy przedstawione później.

    Stworzymy klasę, które będzie przechowywać oraz wypisywać do arkusza dane pracownika.

     

    Definicja klasy

    Każda klasa mieści się w osobnym module w pliku Excel. Moduł klasy tworzymy podobnie jak zwykłe moduły z kodem. Klikam prawym przyciskiem na dowolnej pozycji w oknie projektu i wybieram Insert / Class Module.

    Jak widać dodał się nowy katalog z nowym modułem. Cały kod zawarty w tym nowym module będzie dotyczył jednej klasy.

    Kiedy moduł jest zaznaczony w drzewie projektu, możemy zmienić nazwę klasy w oknie Properties. Czytaj więcej...

    Kurs VBA – Klasy – Wstęp, teoria

    Poniższy tekst rozpoczyna kilka rozdziałów na temat programowania obiektowego. Pewnie dało by się to wszystko skrócić i umieścić w jednej części, ale cóż, taka ze mnie gaduła. Pisząc kolejne wiersze zakładam, że czytelnik porusza się względnie swobodnie w programowaniu VBA. Nie istotne czy nabył tą wiedzę przy pomocy niniejszego kursu czy nie. Nie można programować w VBA bez kontaktu z programowaniem obiektowym, czyli modelem obiektowym Excela. W tej i kolejnych częściach kursu dowiemy się po prostu jak rozszerzać nasz program o nasze własne klasy. Dzięki temu programy mogą stać się bardziej czytelna a ich projektowanie łatwiejsze. Na temat programowania obiektowego napisano mnóstwo książek, na pewno nie mam zamiaru napisać tutaj kolejnej, tym bardziej, że trudno jest znaleźć język programowania, który by spełniał oczekiwania uczonych głów co do realizacji wszystkich cech programowania obiektowego. Sam nie uważam się za wielkiego specjalistę z tego zakresu. Na szczęście wiedza praktyczna i teoretyczna nie muszą iść w parze. Po poniższe części teoretycznej przejdziemy do różnych przykładów praktycznych. Z pewnością VBA tylko w drobnym stopniu realizuje wymagania programowania obiektowego, ale wciąż możemy to wykorzystać do swoich celów. Programowanie obiektowe możemy realizować poprzez Abstrakcję i Hermetyzację.

    Abstrakcja

    Każdy obiekt w systemie służy jako model abstrakcyjnego „wykonawcy”, który może wykonywać pracę, opisywać i zmieniać swój stan oraz komunikować się z innymi obiektami w systemie bez ujawniania, w jaki sposób zaimplementowano dane cechy. Cyt. Wikipedia

    Klasą nazywamy pewien schemat „realnego” bytu. Sama klasa jest dopiero definicją, która jest realizowana przez obiekty danej klasy. Często przytaczanym przykładem jest przypadek samochodu. Klasa to zbiór papierowych czy komputerowych schematów. Określają one rozmiar, możliwe kolory, budowę silnika, sposób użytkowania itd. Obiektem jest natomiast konkretna sztuka auta zbudowana no podstawie tego schematu. Klasę auto możemy zdefiniować w następujący sposób (w kolejnej części kursu napiszę dokładnie jak „pisać” kod klas):

    Oczywiście pełna definicja klasy realizującej funkcje samochodu, zajęła by tysiące linii. Powyżej mamy tylko dwie metody, realizujące przyspieszanie i zwalnianie, oraz jeden atrybut przechowujący prędkość. Czytaj więcej...

    Kurs VBA – cz. 26 – Formularze – Metody

    Czas na ostatnią część tryptyku atrybuty-zdarzenia-metody. Każdy obiekt formularza ma przypisany zestaw metod. Na szczęście jest ich tylko kilka (istotnych). Zdecydowanie w pracy z formularzami najważniejsze są atrybuty i zdarzenia.

    Metody wywołujemy przez połączenie nazwy obiektu i nazwy metody, jak w przypadku każdego innego obiektu.

    Najważniejsze metody

    Show (pokaż)

    Pokazuje formularz. Wspominana już we wcześniejszych cześciach kursu.

    Hide (ukryj)

    Ukrywa formularz przed użytkownikiem. Wszystkie kontrolki, razem ze swoimi wartościami dalej „istnieją” i możemy się do nich odnosić w programie.

    Używamy tej metody, jeżeli przewidujemy, że użytkownik będzie chciał wrócić do tego ekranu i zobaczyć te same wartości, które były, kiedy go opuszczał. Na przykład możemy mieć pomocniczy formularz z listą adresową, który może być otwierany kilka razy, żeby wybrać adres do głównego formularza. Lista będzie uzupełniana tylko przy pierwszym otwarciu. Czytaj więcej...

    Kurs VBA – cz. 25 – Formularze – Zdarzenia

    W tej części kursu opiszę najważniejsze zdarzenia formularza i jego kontrolek. W zdarzeniach możemy umieścić kod, który uruchomi się automatycznie w odpowiedzi na działanie użytkownika.Jest to główna metoda programowania formularzy. Ostatecznie taka jest ich filozofia, program wyświetla pewien szablon przed użytkownikiem i czeka na jego reakcję. Użytkownik może zacząć wypełniać pierwsze pole, może zacznie od drugiego, może kliknie od razu ok albo się rozmyśli i zamknie okno. Wszystkie te działania uruchamiają określone zdarzenia. Czytaj więcej...

    [Pytanie czytelnika] Uzupełnianie combobox lub listbox za pomocą stałej tablicowej

    Jeden z użytkowników zadał pytanie:

    Standardowo ComboBox czy ListBox mogą pobierać wartości z zakresu komórek arkusza. Czy jest jakiś sposób (trik) by te kontrolki (formanty) mogły być zasilane ze stałej tablicowej?

    Pomoc do programu jest w tym przypadku jasna. Pole Input range musi być zakresem. Nie można więc wstawić tam formuły. Załóżmy, że ustawiamy pole combo  ten sposób:

    W polu A8 nie znajdziemy żadnej wartości z zakresu A1:A5, jedynie indeks wybranej pozycji (1,2,3 itd.). Zakres wejściowy będzie więc potrzebny jeszcze raz, jeżeli chcemy gdzieś wstawić konkretną wybraną wartość (tutaj marzec). =INDEKS(A1:A5,A8)

    Kurs VBA – cz. 24 – Formularze – Atrybuty

    W części kursu dotyczącej modelu obiektowego Excela opisałem, że każdy obiekt jest wyposażony w zestaw atrybutów, metod i zdarzeń. Atrybuty opisują stan obiektu, metody to procedury uruchamiane przez nas, natomiast zdarzenia uruchamiają się automatycznie. Poniżej opisuję kilka najważniejszych atrybutów występujących w formularzach. W kolejnych częściach kursu omówię najczęściej używane metody i zdarzenia. Ostatecznie podpowiem gdzie szukać dokładnych informacji na temat poszczególnych elementów.

    AtrybutyKażdy obiekt na formularzu posiada zestaw atrybutów opisujących jego aktualny stan. Jedne występują we wszystkich obiektach formularzy, inne są specyficzne tylko dla kilku z nich. Wszystkie atrybuty zaznaczonego obiektu można zobaczyć w oknie properties. Znajdują się tam atrybuty aktualnie zaznaczonego obiektu. Jeżeli przypadkiem zamkniemy to okno można je otworzyć przyciskiem F4. Po zaznaczeniu atrybutu i naciśnięciu F1 zobaczymy jego wyczerpujący opis.

    Atrybuty możemy przeglądać alfabetycznie, łatwiej w ten sposób je znaleźć, jeżeli pamiętamy nazwę. W innym przypadku lepiej pogrupować po kategoriach. Mamy wtedy obok siebie atrybuty dotyczące jednego typu (wygląd, położenie, zachowanie itp.). Czytaj więcej...