Spis treści
Sformułowanie problemu
Mamy bazę danych (listę, tabelę – nazwij jak chcesz) z informacjami o płatnościach na arkuszu Dane:
Zadanie: szybko wydrukuj paragon gotówkowy (płatność, faktura…) dla dowolnego wpisu wybranego z tej listy. Iść!
Krok 1. Utwórz formularz
Na innym arkuszu książki (nazwijmy ten arkusz) Forma) utwórz pusty formularz. Możesz to zrobić sam, możesz skorzystać z gotowych formularzy, zaczerpniętych np. ze stron magazynu Głównej Księgowej czy strony Microsoftu. Mam coś takiego:
W pustych komórkach (Konto, Kwota, Otrzymane od itp.) uzyska dane z tabeli płatności z innego arkusza – trochę później zajmiemy się tym.
Krok 2: Przygotowanie tabeli płatności
Przed pobraniem danych z tabeli do naszego formularza, tabelę należy nieco unowocześnić. Mianowicie wstaw pustą kolumnę po lewej stronie tabeli. Użyjemy do wpisania etykiety (niech będzie to angielska litera „x”) naprzeciw wiersza, z którego chcemy dodać dane do formularza:
Krok 3. Łączenie tabeli i formularza
Do komunikacji używamy funkcji VPR(WYSZUKAJ.PIONOWO) – więcej na ten temat przeczytasz tutaj. W naszym przypadku, aby w komórce F9 na formularzu wstawić numer płatności oznaczony „x” z arkusza danych, należy w komórce F9 wpisać następującą formułę:
=WYSZUKAJ.PIONOWO("x",Dane!A2:G16)
=WYSZUKAJ.PIONOWO("x";Dane!B2:G16;2;0)
Tych. przetłumaczone na „zrozumiałe”, funkcja powinna znaleźć w zakresie A2:G16 w Arkuszu danych wiersz zaczynający się od znaku „x” i podać nam zawartość drugiej kolumny tego wiersza, czyli numer płatności.
Wszystkie pozostałe komórki formularza wypełnia się w ten sam sposób – w formule zmienia się tylko numer kolumny.
Aby wyświetlić kwotę słownie, użyłem funkcji Własny z dodatku PLEX.
Wynik powinien być następujący:
Krok 4. Aby nie było dwóch „x”…
Jeśli użytkownik wprowadzi „x” w wielu wierszach, funkcja WYSZUKAJ.PIONOWO przyjmie tylko pierwszą znalezioną wartość. Aby uniknąć takiej niejednoznaczności, kliknij prawym przyciskiem myszy kartę arkusza Dane , a następnie Tekst źródłowy (Kod źródłowy). W wyświetlonym oknie edytora Visual Basic skopiuj następujący kod:
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long Dim str As String Jeśli Target.Count > 1 Następnie wyjdź z Sub If Target.Column = 1 Then str = Target.Value Application.EnableEvents = Falser r = Cells(Rows.Count , 2).End(xlUp).Row Range("A2:A" & r).ClearContents Target.Value = str End If Application.EnableEvents = True End Sub
To makro uniemożliwia użytkownikowi wpisanie więcej niż jednego „x” w pierwszej kolumnie.
Cóż, to wszystko! Cieszyć się!
- Używanie funkcji WYSZUKAJ.PIONOWO do zastępowania wartości
- Ulepszona wersja funkcji WYSZUKAJ.PIONOWO
- Kwota w słowach (funkcja Propis) z dodatku PLEX