Vyplnění formulářů údaji z tabulky

Formulace problému

Máme databázi (seznam, tabulku – nazvěte si to, jak chcete) s informacemi o platbách na listu Data:

Úkol: rychle vytiskněte pokladní doklad (platbu, fakturu…) pro jakýkoli požadovaný záznam vybraný z tohoto seznamu. Jít!

Krok 1. Vytvořte formulář

Na jiném listu knihy (říkejme tomuto listu Formulář) vytvořte prázdný formulář. Můžete to udělat sami, můžete použít hotové formuláře, převzaté např. z webů časopisu Hlavní účetní nebo webu Microsoftu. Dostal jsem něco takového:

Vyplnění formulářů údaji z tabulky

V prázdných buňkách (Účet, Částka, Přijato od atd.) získá údaje z platební tabulky z jiného listu – tím se budeme zabývat o něco později.

Krok 2: Příprava platební tabulky

Než vezmeme data z tabulky pro náš formulář, je potřeba tabulku mírně zmodernizovat. Konkrétně vložte prázdný sloupec nalevo od tabulky. Pro zadání štítku (ať je to anglické písmeno „x“) použijeme naproti řádku, ze kterého chceme do formuláře přidat data:

Krok 3. Propojení tabulky a formuláře

Pro komunikaci používáme funkci VPR(VYHLEDAT) – více si o tom můžete přečíst zde. V našem případě, abyste vložili číslo platby označené „x“ z datového listu do buňky F9 formuláře, musíte do buňky F9 zadat následující vzorec:

=VLOOKUP(“x”,Data!A2:G16)

=VLOOKUP(“x”;Data!B2:G16;2;0)

Tito. přeloženo do „srozumitelné“, funkce by měla najít v rozsahu A2:G16 na datovém listu řádek začínající znakem „x“ a dát nám obsah druhého sloupce tohoto řádku, tj. číslo platby.

Všechny ostatní buňky formuláře se vyplňují stejným způsobem – ve vzorci se mění pouze číslo sloupce.

Pro zobrazení částky ve slovech jsem použil funkci Vlastní z doplňku PLEX.

Výsledek by měl být následující:

Vyplnění formulářů údaji z tabulky

Krok 4. Aby neexistovala dvě „x“ …

Pokud uživatel zadá „x“ proti více řádkům, funkce SVYHLEDAT převezme pouze první hodnotu, kterou najde. Chcete-li se vyhnout takové nejednoznačnosti, klikněte pravým tlačítkem myši na záložku listu Data a pak Zdrojový text (Zdrojový kód). V zobrazeném okně editoru jazyka Visual Basic zkopírujte následující kód:

Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long Dim str As String If Target.Count > 1 Then Exit Sub If Target.Column = 1 Then str = Target.Value Application.EnableEvents = False r = Cells(Rows.Count , 2).End(xlUp).Row Range("A2:A" & r).ClearContents Target.Value = str End If Application.EnableEvents = True End Sub  

Toto makro zabraňuje uživateli zadat více než jedno „x“ do prvního sloupce.

No, to je vše! Užívat si!

  • Použití funkce VLOOKUP k nahrazení hodnot
  • Vylepšená verze funkce VLOOKUP
  • Částka ve slovech (funkce Propis) z doplňku PLEX

 

Napsat komentář