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

Jste zde: Úvodní stránka » excel » vba-formulare » Hromadna-uprava-prvku-formulare-Excel-VBA
Microsoft Excel logo

Hromadná úprava prvků formuláře - Excel VBA

Videokurzy Excel

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

Jak hromadně spravovat prvky (objekty) formuláře. Přidat několik Label (Popisku), TextBoxů atd. Přečíst, smazat (nemyslím zneviditelnit). Zkontrolovat existenci prvku formuláře atd. Předpokladám základní znalostí formulářů. Navíc předpokládám, že máte nastaveno v References > Microsoft Forms 2.0 Object Library.

Úvodem

Při práci s formuláři ve VBA Excelu je někdy potřebujete přečíst údaje z několik TextBoxu (textových polí), nebo je do těchto prvků zapsat. Přepsat několik Label (Popisek), automaticky prvky na formulář umístit atd.

Pro přehlednost je článek rozdělen na kapitoly, ať článek mohu rozšiřovat a vylepšovat, na základě svých potřeb, případně na základě nápadů na vylepšení v komentářích:

Poznámka: Pokud nemáte inicializovánou knihovnu Microsoft Forms 2.0 Object Library. Doporučuji kapitolu Tipy a triky - nastavení Referencess.

Pokud máte k dispozici formulář, můžete rovnou testovat, pokud ne, můžete si jej vytvořit nebo stánout ukázkový soubor z kapitoly Ke stažení.

Ukázka formuláře pro ttesty v Excel VBA

Přečíst data z několika TextBox

Ve formuláři mám několik Textboxů. Jejich jméno (název) se liší posledním číslem. Například jde o TextBox. Tedy TextBox1 ... TextBox*

For j = 1 To 2 UserForm2.Controls("TextBox" & (j)).Value Next j

Pokud si chcete vypsat do MsgBox neboli dialogového okna.

For j = 1 To 3 MsgBox ("V TextBox" & j & " je hodnota: " & UserForm2.Controls("TextBox" & (j)).Value) Next j

Podobně lze vypsat do DebugPrint.

Zapsat data do několika TextBox

Pokud umíte přečíst data TextBox, stejně tak to TextBoxů můžete údaje zapsat (podobně to platí i pro jiné prvky).

For j = 1 To 3 UserForm2.Controls("TextBox" & (j)).Value = "Hodnota: " & j Next j

Počet prvků

Potřebujete li přečíst dat a z některých prvků, možná se vám bude hodit vědět kolik těch prvků k dispozici je (dále si ukážeme i jak prvky přidávat).

Dim cCont As Control Dim lCount As Long For Each cCont In Me.Controls If TypeName(cCont) = "TextBox" Then lCount = lCount + 1 End If Next cCont MsgBox "Počet " & lCount & " TextBox"

Existuje prvek s tímto jménem

Budete-li se dotazovat na jméno prvku, které neexistuje, může kód skončit chybou, proto je vhodné nejprve zkontrolovat, zda prvek s požadovaným jménem existuje. Pokud existuje mžete požadovanou akci provést, pokud neexistuje provedete jinou (například uživatel upozorníte, že prvek s daným názvem neexistuje).

Dim ctrl As Control On Error Resume Next Set ctrl = Me.Controls("Textbox1") If Err = 0 Then MsgBox ("Existuje") Else MsgBox ("Nexistuje") End If On Error GoTo 0

Existuje prvek na listě?

Dim ws As Worksheet Dim shp As Shape Set ws = ActiveSheet For Each shp In ws.Shapes If shp.Name = "Label1" Then MsgBox ("Existuje") End If Next

Přidat prvky

Například pro přidávaní položek v životopise. Podle počtu znalostí jazyka, si člověk přidá další TextBox.

Dim ctlTxt As Control Dim ctlLbl As Control Set ctlTxt = Me.Controls.Add("Forms.TextBox.1") ctlTxt.Top = 100 ctlTxt.Left = 100 ctlTxt.Value = "Text here" Set ctlLbl = Me.Controls.Add("Forms.Label.1") ctlLbl.Top = ctlTxt.Top ctlLbl.Left = ctlTxt.Left - ctlLbl.Width - 5 ctlLbl.Caption = "popisek"

Případně přidat skupinu prvků:

Dim theLabel As Object Dim labelCounter As Long For labelCounter = 1 To 3 Set theLabel = UserForm2.Controls.Add("Forms.Label.1", "Test" & labelCounter, True) With theLabel .Caption = "Test" & labelCounter .Left = 10 .Width = 50 .Top = 10 * labelCounter End With Next

Smazat prvky

Pokud prvky nechcete skrývat, můžete je z formuláře odstranit.

Me.Controls.Remove "Label" & 1 ' Nebo v daném formuláři UserForm1.Controls.Remove "Label" & 1

Případně více prvků

For i = 1 To 3 Me.Controls.Remove "Test" & i Next i

Tipy a triky

Pro správnou funkci je potřeba mít nastaveno: References > Microsoft Forms 2.0 Object Library

References > Microsoft Forms 2.0 Object Library

Další v přípravě

Související články

Další články

Microsoft Excel VBA - stahuj logo

Ke stažení

Soubor Formuláře hromadná práce v Excel s VBA soubor ve formátu *.xlsm ke stažení zdarma. Soubor využívá makra.


Závěrem

Napadá vás tip na doplnění, můžete uvést v komentáři.

Článek byl aktualizován: 23.05.2019 15:25

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 zatím nejsou

Můžete být prvními co zanechají smysluplný komentář.






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 - 2019 | 187

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.