Edytor VBA – prywatne i publiczne

W edytorze  VBA każdy moduły własne obiektów ma charakter prywatny. Oznacza to, że wszystkie zapisane w nim funkcje i procedury są dostępne tylko z poziomu VBA.

Moduły ogólne są domyślnie publicznie. Zdefiniowane w nich procedury i funkcje publiczne są widoczne również z poziomu Accessa (m.in. w kreatorze wyrażeń). Funkcje i procedury prywatne mogą być wykorzystane jedynie z poziomu procedur zapisanych w tym samym module. 

Np. taka funkcje w module ogólnym:

Public Function PierwszyNumer()
   'funkcja publiczna
Pierwszy = DFirst(„NumerKatalogowy”, „TabelaKsiazki”, „DataP is null”)
End Function


Private Function OstatniNumer()
   'funkcja prywatna
OstatniNumer = DLast(„NumerKatalogowy”, „TabelaKsiazki”, „DataP is null”)
End Function

W kreatorze wyrażeń wygląda to tak:

kliknij, aby powiększyć

W bazie Biblioteka, w module ModuleFunction  widoczna jest tylko jedna funkcja – zdeklarowana jako Public. Prywatna funkcja OstatniNumer nie jest tu widoczna, może być wykorzystana tylko w obrębie tego samego modułu. 

Przy bardziej rozbudowanych projektach i  wielu procedurach w kodzie może być więcej modułów ogólnych z różnymi procedurami i funkcjami. Nie wszystkie z nich muszą być widoczne i dostępne również bezpośrednio w Accessie, czasem warto je „utajnić”. Wystarczy na początku modułu ogólnego wstawić Option Private Module

kliknij, aby powiekszyć

Od tej pory – wszystkie funkcje i procedury publiczne w takim module będą dostępne z innych modułów, ale nie w Accessie. 
W praktyce zawsze tak robię, porządkując funkcje i procedury i część z nich umieszczając je modułach prywatnych, a część – publicznych. Zmieniam też nazwy modułów, żeby się nie pogubić i utrzymać porządek w kodzie. 
Np. tak:

kliknij, aby powiększyć

 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Zdarzenia formularza

Zdarzenia formularza  to makra i procedury uruchamiane automatycznie na skutek któregoś z działań tego formularza. 
Procedury VBA znajdują się w module własnym formularza. 
Przypisujemy je w zakładce Zdarzenia  Arkusza właściwości formularza.

Do każdego zdarzenia możemy przypisać po nazwie konkretne makro zzapisane w aplikacji:

kliknij, aby powiększyć

Można też uruchomić konstruktora:

Istnieją tu 3 możliwości:

    • Konstruktor makr
      w nowym oknie definiujemy makro. Po zapisaniu nie jest ono widoczne w grupie makr w oknie nawigacji i nie można go wykorzystać w innych formularzach. W arkuszu właściwości będzie widoczne jako makro osadzone.


      kliknij, aby powiększyć
    • Konstruktor wyrażeń 
      – w nowym oknie możemy wybrać dowolną funkcję lub metodę

    • Konstruktor kodu
      – przejście do edytora VBA, do modułu formularza

A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Funkcja nz()

Funkcja nz to funkcja konwersji Accessa.  

kliknij, aby powiększyć

Funkcja ma 2 obowiązkowe argumenty:

    • wartość typu wariant – wartość danego pola, mogącą być również brakiem wartości czyli null
    • wartość_jeśli _null – wartość wynikowa funkcji jeżeli pierwszy argument to null 

Funkcja pożyteczna i często ją stosuję. Opisałam to szczegółowo tu:
Null to nie zero

Funkcja Nz występuje i działa tak samo w Accessie (czyli w kreatorze wyrażeń) jak i kodzie VBA.


Funkcja DateAdd

Funkcja DateAddl() to jedna z funkcji Daty i Czasu . Tworzy datę przesuniętą o określony interwał czasu. 

Argumenty funkcji to:

    • Interwał – symbol jednostki daty, wartość typu String. 
      Możliwe opcje to:

        • yyyy – rok
        • q– kwartał
        • m– miesiąc
        • d– dzień
        • ww– tydzień
        • h– godzina
        • n– minuta
        • s– sekunda
    • Liczba-liczba jednostek czasu, wartość typu Double
    • Data-data początkowa, wartość typu Date

Wszystkie argumenty są obowiązkowe. 

Funkcja ta wygląda i działa tak samo w konstruktorze wyrażeń, jak i w VBA.

I na wszelki wypadek przypominam:

Data i czas to liczba


Funkcja DateSerial

Funkcja DateSerial() to funkcja daty i czasu Accessa.  Wynikiem jej działania jest data stworzona z argumentów wejściowych.

Funkcja ma 3 obowiązkowe argumenty:

    • Rok  – wartość roku, typu Integer
    • Miesiąc – wartość miesiąca, typ Integer
    • Dzień – numer dnia miesiąca, typ Integer

Po wpisaniu wartości poszczególnych argumentów funkcji, otrzymujemy wartość typu Data

Funkcja DateSerial() występuje i działa tak samo w Accessie (czyli w kreatorze wyrażeń) jak i kodzie VBA.