VBA w służbie księgowości

Chcesz, żeby Excel działał jak prawdziwa aplikacja, w której dodajesz dane przez formularz zamiast wklepywać je ręcznie? Dziś pokażę Ci, jak to ogarnąć — bez żadnych dodatków, tylko za pomocą wbudowanego edytora VBA.

To rozwiązanie sprawdzi się wszędzie tam, gdzie często dodajesz nowe wpisy, np. produkty i ceny. Będzie prosto, zrozumiale i bez nadmiaru kodu.

Co zrobimy?

Stworzymy formularz użytkownika, który:

  • pozwoli wpisać nazwę produktu i cenę,
  • po kliknięciu „Zapisz” — automatycznie doda dane do arkusza,
  • dołoży datę (bo czemu nie),
  • i zrobi to wszystko bez potrzeby uruchamiania makra za każdym razem.

1. Tworzymy formularz

Najpierw musisz wejść do edytora VBA (ALT + F11). W lewym menu kliknij:
Wstaw → Formularz użytkownika (UserForm).

Dodaj:

  • dwie etykiety (Label) — wpisz „Produkt” i „Cena”,
  • dwa pola tekstowe (TextBox) — zmień ich nazwy na txtProdukt i txtCena,
  • dwa przyciski (CommandButton) — nazwij je cmdZapisz i cmdAnuluj.

Na przyciskach wpisz odpowiednio:

  • Zapisz
  • Anuluj

2. Wklejamy kod do formularza

Kliknij dwa razy przycisk „Zapisz” i wklej ten kod:

vbaKopiujEdytujPrivate Sub cmdZapisz_Click()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Arkusz1") ' Zmień na swój arkusz

    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1

    ws.Cells(lastRow, 1).Value = txtProdukt.Value
    ws.Cells(lastRow, 2).Value = txtCena.Value
    ws.Cells(lastRow, 3).Value = Date

    MsgBox "Dodano produkt: " & txtProdukt.Value, vbInformation
    Unload Me
End Sub

Potem przejdź do przycisku Anuluj i wklej:

vbaKopiujEdytujPrivate Sub cmdAnuluj_Click()
    Unload Me
End Sub

3. Uruchamianie formularza

Teraz potrzebujesz tylko sposobu na odpalenie tego formularza. Wstaw nowy moduł (Wstaw → Moduł) i dodaj:

vbaKopiujEdytujSub Formularz()
Formularz_uzytkownika.Show
End Sub

Pamiętaj, że Formularz_uzytkownika to nazwa Twojego UserFormu. Jeśli nazywasz go inaczej, to oczywiście zmień to też tutaj.


Efekt końcowy

Klikasz formularz, wpisujesz dane, klikasz Zapisz — i gotowe. Produkt zapisany, cena dodana, data wstawiona. Bez błędów, bez dublowania, bez użerania się z formułami.

To serio działa świetnie i sam nie wiem, czemu tyle razy robiłem to ręcznie.


Najczęstszy błąd (i jak go uniknąć)

Jeśli wcześniej miałeś jakieś makro z Worksheet_Change, które wyświetla InputBox — wyłącz je albo usuń. Inaczej formularz będzie się dublował z okienkiem.


Podsumowanie

Ten prosty formularz to genialna sprawa:

  • nie trzeba niczego wpisywać ręcznie,
  • nie trzeba pamiętać o klikaniu makra,
  • wygląda profesjonalnie,
  • i — co najważniejsze — każdy ogarnie jego obsługę.

U mnie działa, u klientów działa, działać będzie też u Ciebie!