Přeskočit navigaci | Přeskočit na novinky

Jste zde: Úvodní stránka » excel » vba-formulare » excel-vba-userform-formular

UserForm (Formulář) ve VBA

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

... UserForm (Formulář) a jeho použítí ve VBA...

Vložit UserForm

Než začneme pracovat s ovládacími prvky musíme vytvořit formulář do kterého je můžeme umístit. Karta Vývojář - Visual Basic. Menu Insert - UserForm.

Vlastnosti:

Seznam základních vlastností prvku UserForm (Formulář). Okno vlastností můžeme zobrazit klávesou F4.

  • (Name)
  • BackColor
  • BorderColor
  • BorderStyle
  • Caption
  • Cycle
  • DrawBuffer
  • Enabled
  • Font
  • ForeColor
  • Height
  • HelpContextID
  • KeepScrollBarsVisible
  • Left
  • MouseIcon
  • MousePointer
  • Picture
  • PictureAlignment
  • PictureSizeMode
  • PictureTiling
  • ScrollBars
  • ScrollHeight
  • ScrollLeft
  • ScrollTop
  • Scrollwidth
  • SpecialEffect
  • StartUpPosition
  • Tag
  • Top
  • WhatsThisButton
  • WhatsThisHelp
  • Width
  • Zoom

(Name)

Pojmenování prvku (můžeme změnit). Ve kódech se pak budeme na tento prvek odkazovat jeho jedinečným názvem. V našem příkladě je (Name) UserForm1.

BackColor

Vrací nebo nastavuje barva pozadí objektu TextBox.

  UserForm1.BackColor = RGB(255, 128, 128)
  BarvaPozadi = UserForm1.BackColor

BorderColor

Vrací nebo nastavuje barvu okrajů. Pokud není nastaven okraj tak se změna barvy neprojeví.

  UserForm1.BorderColor = RGB(254, 127, 127)

BorderStyle

Vrací nastavení nebo změní nastavení okrajů.

fmBorderStyleNone - 0 - nemá viditelný okraj

fmBorderStyleSingle - 1 -

  UserForm1.BorderStyle = fmBorderStyleSingle

Poznámka ignoruje se pokud je vlastnost SpecialEffect = none

Caption

Varcí Text na objektu Label (Popis) nebo ho nastaví.

  UserForm1.Caption = "office.lasakovi.com - Pavel Lasák"
  AktualniTextVUserForm = UserForm1.Caption

Cycle

Specifikuje akci, která se má provést, když uživatel opustí poslední ovládací prvek ovládacího prvku Frame.

  • fmCycleAllForms 0 Cykluje ovládacími prvky na formuláři a ovládacími prvky Frame, které jsou právě zobrazeny na formuláři.
  • fmCycleCurrentForm 2 Cykluje ovládacími prvky na formuláři a ovládacími prvky Frame. Formulář, Frame zůstává aktivní, dokud se aktivita explicitně nepřesune k ovládacímu prvku mimo formulář, Frame.
  UserForm1.Cycle = fmCycleCurrentForm
  UserForm1.Cycle = 0

DrawBuffer

Určuje počet pixlů, které se odkládají pro skrytou (off-screen) paměť při vykreslování rámečku. Celé číslo od 16,000 do 1,048,576, které vyjadřuje maximální počet pixlů, které objekt může skrytě vykreslovat.

  

Enabled

Určuje, zda se může ovládací prvek stát aktivním a odpovídat na události, generované uživatelem. Nebo specifikuje jak je tato vlastnost aktuálně nastavena.

  UserForm1.Enabled = True
  UserForm1.Enabled = False
  EnabledNastaveni = UserForm1.Enabled

Ukončit Alt + F4.

Font

Vrací nastavení fontu nebo nastaví požadovaný fontu (velikost, typ, ...).

  UserForm1.Font.Italic = True

ForeColor

Varcí nastavení nebo definuje barvu popředí objektu tj. v našem případě jakou barvu bude mít text.

  UserForm1.ForeColor = RGB(255, 255, 0)

Height

Vrací výšku formuláře nebo jeho výšku nastaví.

  UserForm1.Height = 28
  Vyska = UserForm1.Height

HelpContextID

Odkaz do nápovědy ve formátu Microsoft Windows pro konkretní objekt

  

KeepScrollBarsVisible

Určuje, zda mají zůstat posuvníky viditelné i v případě, že nejsou potřeba.

  • fmScrollBarsNone 0 Nezobrazí posuvníky.
  • fmScrollBarsHorizontal 1 Zobrazí vodorovný posuvník.
  • fmScrollBarsVertical 2 Zobrazí svislý posuvník.
  • fmScrollBarsBoth 3 Zobrazí vodorovný a svislý posuvník (výchozí nastavení).
  UserForm1.KeepScrollBarsVisible = fmScrollBarsBoth

Left

Umístění objektu od levého okraje. Nebo zjištění jak je umístěn objekt.

  umistenileft = UserForm1.Left
  UserForm1.Left = 12

MouseIcon

Přiřazení ikony por objekt

  UserForm1.MouseIcon = LoadPicture("c:\mojeIkonka.ico")

MousePointer

Vrací typ ukazatele myši, nebo nastaví ukazatel myši. Hodnoty jsou:

  • fmMousePointerDefault 0 - standartní ukazatel
  • fmMousePointerArrow 1
  • fmMousePointerCross 2
  • fmMousePointerIBeam 3
  • fmMousePointerSizeNESW 6
  • fmMousePointerSizeNS 7
  • fmMousePointerSizeNWSE 8
  • fmMousePointerSizeWE 9
  • fmMousePointerUpArrow 10
  • fmMousePointerHourglass 11
  • fmMousePointerNoDrop 12
  • fmMousePointerAppStarting 13
  • fmMousePointerHelp 14
  • fmMousePointerSizeAll 15
  • fmMousePointerCustom 99
  UserForm1.MousePointer = fmMousePointerHelp

Picture

Nastavení obrázek na pozadí.

  UserForm1.Picture = LoadPicture("c:\mujObrazek.bmp")

Poznámka: Nutno zadat správný název a umístění obrázku.

PictureAlignment

Udává umístění obrázku v pozadí. Nebo vrací nastavení této vlastnosti.

  • fmPictureAlignmentTopLeft - 0 - Levý horní roh.
  • fmPictureAlignmentTopRight - 1 - Pravý horní roh.
  • fmPictureAlignmentCenter - 2 - Střed.
  • fmPictureAlignmentBottomLeft - 3 - Levý dolní roh.
  • fmPictureAlignmentBottomRight - 4 - Pravý dolní roh.
  UserForm1.PictureAlignment = fmPictureAlignmentTopRight

PictureSizeMode

Udává, jak se v ovládacím prvku, formuláři nebo stránce zobrazí obrázek v pozadí.

  • fmPictureSizeModeClip - 0 - Zkrátí část obrázku, jež přesahuje formulář nebo stránku (výchozí nastavení).
  • fmPictureSizeModeStretch - 1 - Natáhne obrázek, aby vyplňoval formulář nebo stránku. Toto nastavení může obrázek zkreslit ve vodorovném nebo svislém směru.
  • fmPictureSizeModeZoom - 3 - Zvětší obrázek, ale nezkreslí ho ani ve vodorovném ani ve svislém směru.
  Frame1.PictureSizeMode = fmPictureSizeModeStretch

Poznámka: Nejprve musí být nahrán nějaký obrázek.

PictureTiling

Umožňuje uspořádat obrázek na formuláři nebo stránce jako dlaždice.

  • True - Obrázek se v pozadí opakovaně zobrazí jako dlaždice.
  • False - Obrázek se nezobrazí v pozadí opakovaně (výchozí nastavení).
  UserForm1.PictureTiling = True

ScrollBars

Určuje, zda ovládací prvek, formulář nebo stránka mají svislý posuvník, vodorovný posuvník nebo oba posuvníky.

  • fmScrollBarsNone - 0 - Nezobrazí žádné posuvníky (výchozí nastavení).
  • fmScrollBarsHorizontal - 1 - Zobrazí vodorovný posuvník.
  • fmScrollBarsVertical - 2 - Zobrazí svislý posuvník.
  • fmScrollBarsBoth - 3 - Zobrazí vodorovný a svislý posuvník.
  UserForm1.ScrollBars = fmScrollBarsBoth

ScrollHeight

Udává celkovou výšku oblasti v bodech, kterou lze zobrazit pomocí posuvníků daného ovládacího prvku, formuláře, nebo stránky.

  UserForm1.ScrollHeight = 300

ScrollLeft

Udává vzdálenost v bodech, levého okraje viditelného formuláře od levého okraje logického formuláře, stránky nebo ovládacího prvku. Viz ScrollTop.

  UserForm1.ScrollLeft = 30

ScrollTop

Udává vzdálenost v bodech, horního okraje viditelného formuláře od horního okraje logického formuláře, stránky nebo ovládacího prvku. Jakoby posune formulář (pokud jsou povoleny posuvníky)

  UserForm1.ScrollTop = 30

Poznámka: Při testování povolte posuvníky ScrollBars a zvětšte plochu ScrollHeight.

Scrollwidth

Udává celkovou šířku oblasti v bodech, kterou lze zobrazit pomocí posuvníků daného ovládacího prvku, formuláře, nebo stránky.

  UserForm1.Scrollwidth = 300

SpecialEffect

Vrací nebo určuje speciální efekty objektu.

  • fmSpecialEffectFlat 0
  • fmSpecialEffectRaised 1
  • fmSpecialEffectSunken 2
  • fmSpecialEffectEtched 3
  • fmSpecialEffectBump 6
  UserForm1.SpecialEffect = fmSpecialEffectFlat
  UserForm1.SpecialEffect = 6
   StavSpecialEfekt = UserForm1.SpecialEffect

StartUpPosition

Vrátí nebo nastaví hodnotu určující umístění formuláře UserForm při prvním zobrazení.

  • Manual 0 Není určeno počáteční nastavení.
  • CenterOwner 1 Vystředí se na položce, ke které UserForm patří.
  • CenterScreen 2 Vystředí se v rámci celé obrazovky.
  • WindowsDefault 3 Umístí se v levém horním rohu obrazovky.
  UserForm1.StartUpPosition = WindowsDefault

Tag

Doplňkové informace o objektu.

  UserForm1.Tag = "office.lasakovi.com"

Top

Umístění objektu od horní okraje. Nebo zjištění jak je umístěn objekt.

  umistenitop = UserForm1.Top
  UserForm1.Top = 12

WhatsThisButton

Vrátí boolovskou hodnotu, která určuje, jestli se tlačítko What's This objeví na panelu objektu UserForm. Je možné ji čísti pouze za běhu.

  • True - Zobrazí tlačítko What's This Help.
  • False - (Výchozí) Odstraní tlačítko What's This Help.
  UserForm1.WhatsThisButton = True

WhatsThisHelp

Vrátí boolovskou hodnotu, která určuje, jestli kontextová nápověda používá vyvolávací okno nápovědy systému Windows 95 nebo hlavní okno nápovědy. Je možné ji číst pouze za běhu.

  • True Aplikace použije jednu z technik přístupu What's This ke spuštění nápovědy Windows a načte téma určené vlastností WhatsThisHelpID.
  • False (Výchozí) Aplikace pomocí klávesy F1 spustí nápovědu Windows a načte téma určené vlastností HelpContextID.
  UserForm1.WhatsThisHelp = True

Width

Vrací šířku objektu nebo jeho výšku nastaví.

  UserForm1.Width = 110
  Sirka = UserForm1.Width

Zoom

Nastane při změně hodnoty vlastnosti Zoom (přiblížení/zvětšení).

  UserForm1.Zoom = 110

Ke stažení

Hotový příklad ke stažení: Formulář UserForm - ukázky použití soubor ve formátu *.xls

Obrázek - pro testy s formulářem.

MS Excel - obrazek
MS Excel - formuláře - UserForm

Závěr

Popis vlastnosti objektu UserForm1 máme za sebou :)

Článek byl aktualizován: 19.09.2020 11:06

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře


Honza

Přidáno: 18.01.13 13:24

Nevím, kde je lepší místo na můj dotaz. Jde při frame1.enabled "zamlžit" všechny objekty uvnitř a ne jenom název rámu? Děkuji

Pavel Lasák

Přidáno: 18.01.13 16:06

To Honza: Nevím o tom. Osobně "zamlžuji" každý objekt zvláť.

Honza

Přidáno: 25.01.13 10:02

Každý objekt zvlášť, například takto: Dim y As Control For Each y In Frame1.Controls y.Enabled = True Next Nic lepšího jsem nenašel.

Pavel Lasák

Přidáno: 25.01.13 16:58

To Honza: Také jsem hledal a nic nenašel (za těch pár let jsem to potřeboval jen jednou) řekl bych, že jede o nestandartní požadavek.

Honza

Přidáno: 28.01.13 15:27

Nejdou ovládat prvky hromadně, když se udělá z nich skupina (group)? Ale nenašel jsem ve VBA okně ani název tý skupiny. Pak by bylo třeba Group1.enabled = false.

Karolína

Přidáno: 03.03.14 17:33

Potřebovala bych poradit, zda je možné prostřednictvím kódu konkrétního userformu přistupovat např. k textboxům z jiných userformů. Mám soustavu provázaných userformů pomocí tlačítek "dále" a "zpět" a potřebuji aby se texty ze všech textboxů, které jsou na všech userformech umístěny smazaly až ve chvíli, kdy na posledním stisknu tlačítko "dokončit". Díky moc

Petr

Přidáno: 04.12.14 14:48

Chtěl bych se zeptat, jestli je možné přes vlastnosti UserFormu nastavit nějak pořadí jednotlivých oken stejně jako mohu měnit pořadí prvků (label,image...) ve formuláři? Předem díky.

Paul To Karolina

Přidáno: 14.02.15 17:53

Samozřejmě že lze. Do procedury tlačítka Dokončit vložte např. takto: With userform1 . Textbox1 = "" . Textbox2 = "" End With With userform2 . Textbox1 = "" . Textbox2 = "" End With

Paul To Karolína

Přidáno: 14.02.15 19:49

Kód trochu přehledněji


With Userform1
 . TextBox1 = "" 
 . TextBox2 = "" 
End With 
With UserForm2
 . TextBox1 = "" 
 . TextBox2 = "" 
End With 

Radim

Přidáno: 16.02.15 07:27

zdravim .. prosim o pomoc s problémem .. vytvarim aplikaci v VBA .. mam formular ve kterym mam spoustu textboxů .. tyto textboxy mají zobrazovat obsah bunek v List2 .. makrem menim obsah bunek Listu 2 .. při spustenem formulari .. obsah texboxů se ovšem nemeni .. potrebuji nejak zjistit .. jak obnovovat .. (refreshovat) formular .. tak aby po kazde zmene v bunce se hned projevila zmenou v prislusnem textboxu .. chci se vyhnout tomu aby mel uživatel pristup k bunkam . .hned po zapnuti se aplikace zminimalizuje a dal se pracuje jen ve formulářích .. je to kvul iaplikaci .. kam mají ruzni uzivatele pristup pomoci hesla .. prosim o pomoc sem v koncích .. vse mam vymyslene a napsane . .ale furt nevim jak obnovit ten obsah texboxů ..

Paul To Radim

Přidáno: 20.02.15 13:45

Zdravím, předpokládám, že makro, jež provádí operace, které pak mění hodnoty buněk ve Vašem listu,spouštíte z daného userformu např. tlačítkem (CommandButton). Pak by mělo stačit do procedury tohoto tlačítka, resp. makra, jež mění hodnoty v buňkách, zařadit přečtení nových hodnot a zobrazení v textboxech např. takto:

V případě, že je před minimalizací zobrazen list2

TextBox1 = Range("B2")

V případě, že je zobrazen jiný list a hodnoty chcete číst z buněk listu2

TextBox1 = Sheets("list2").Range("A2")

kadrleyn

Přidáno: 05.03.15 11:39

hi I made an excel advanced userform. You can view :http://adf.ly/138E1W

AnnaD

Přidáno: 08.04.15 15:03

Dobrý den. Pokud se ptám na trivialitu, omlouvám se . Jsem samouk a pracuji v podstatě jen na základě těchto stránek (výborných!). Jak zjistím ve VBA, že formulář byl ukončen křížkem a nikoli mnou dodaným tlačítkem OK? Dík a stálé zdraví přeju

Milan K

Přidáno: 05.09.15 19:56

Dobrý den. Mám takový dotaz. Jde ve VBA zjistit aktuální velikost formuláře, aplikace a celé obrazovky? Děkuji.

Matúš

Přidáno: 11.12.15 15:31

Existuje nejaký príkaz ktorým zistím či je userform aktivny alebo nie? ďakujem

J. Petr

Přidáno: 17.08.16 12:08

Dobrý den. Nemáte někdo zkušenosti se zmizením formuláře z paměti, tzn. že ho nelze vůbec zobrazit ani v prostředí VBA? Díky






Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |