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.
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í.
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.
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
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"
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
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
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
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ší články
Soubor Formuláře hromadná práce v Excel s VBA ke stažení zdarma. Soubor využívá makra.
Napadá vás tip na doplnění, můžete uvést v komentáři.
Článek byl aktualizován: 19.09.2020 11:06
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.
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ů.
Můžete být prvními co zanechají smysluplný komentář.
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
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 |