Akademia VBA

czyli jak uzyskać władzę nad światem … danych

Jak skorzystać z kodu VBA znalezionego w Internecie

Kategorie: Excel VBA,Ogólne,Podstawy VBA — Dariusz Kolasa o 15:12, 4 Lip 2010

Dla początkujących może być to poważny problem. Przede wszystkim trzeba ocenić czy przypadkiem kod nie jest szkodliwy. Na szczęście w przypadku kodu VBA jest to bardzo rzadko spotykane. Po drugie trzeba rozróżnić czy jest to kod do umieszczenia w module publicznym, czy prywatnym module formularza, raportu, skoroszytu czy arkusza.

Moduł publiczny wstawiamy z menu Instert – Module (wcześniej Alt-F11 aby otworzyć edytor VBA). Tu wklejamy funkcje, które mają być dostępne z poziomu funkcji użytkownika w Excelu czy też w każdej kwerendzie, raporcie czy formularzu w Accessie (np wrzucamy tu funkcję Slownie, jeżeli chcemy aby była powszechnie dostępna w całej bazie)

Moduł prywatny zawsze związany jest z jakimś obiektem. Tylko tu możemy umieścić kod automatycznie wykonujący się z powodu zdarzeń generowanych przez użytkownika takich jak otwarcie czy zamknięcie dokumentu, lub kliknięcie w przycisk. Jeżeli widzimy kod bezpośrednio odwołujący się do kontrolek na formularzu, jak np poniższe dwie procedury:

Private Sub UserForm_Initialize()
 
    przyciskUruchom.Enabled = False
    listaFunkcji.AddItem "Funkcja1"
    listaFunkcji.AddItem "Funkcja2"
 
End Sub
 
Private Sub listaFunkcji_Click()
    przyciskUruchom.Enabled = True
End Sub

to znaczy, że aby przetestować taki kod trzeba: po pierwsze trzeba utworzyć formularz, po drugie umieścić na nim pole listy i przycisk a po trzecie odpowiednio je ponazywać (właściwość Name kontrolki). Efektem powyższych procedur jest początkowe wyłączenie przycisku i załadowanie pola listy. Następnie gdy użytkownik kliknie coś na liście, przycisk zostanie włączony.

Jak dopisać rekord na formularzu z poziomu VBA?

Kategorie: Access VBA — Dariusz Kolasa o 18:01, 9 Cze 2010

Może to być potrzebne np przy pobieraniu danych z jakiegoś pliku. Jeżeli jest w tym momencie aktywny odpowiedni formularz (czyli taki na którym są pola tekstowe o nazwach „Imie” i „Nazwisko”), to możemy od razu zapisać pobrane dane. Procedura jest wyzwalana po kliknięciu przycisku o nazwie „przyciskDopiszRekord”, który także musi się znaleźć na formularzu.

Private Sub przyciskDopiszRekord_Click()
    Dim strImie As String, strNazwisko As String
 
    'testowe pobranie danych 
    strImie = InputBox("Podaj imię")
    strNazwisko = InputBox("Podaj nazwisko")
 
    'ustawienie się na nowym rekordzie
    DoCmd.GoToRecord , , acNewRec
 
    'wpisanie wartości do pól
    Me.Imie = strImie
    Me.Nazwisko = strNazwisko
 
    'zapisanie rekordu na fm
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End Sub