VBA - Ako vytvoriť UserForm v module triedy
- predpoklady
- Kód
- Modul triedy
- Funkcia volania
predpoklady
Prejdite na položku Možnosti programu Excel > Správa dôveryhodnosti > Nastavenia makra a skontrolujte, či je zapnutá nasledujúca možnosť: Dôverný prístup k modelu objektu objektu VBA .Kód tiež vyžaduje nižšie uvedené odkazy, konkrétne Microsoft Forms 2.0 Object Library a Microsoft Visual Basic for Applications Extensibility 5.3 . Môžete ich povoliť kliknutím na ponuku Nástroje editora VBA a potom na položku Referencie .
Kód
V tomto príklade vytvoríme používateľský formulár obsahujúci dve tlačidlá. Po kliknutí na toto tlačidlo sa ich kód zobrazí v kóde volajúcej funkcie.Modul triedy
Vytvorte modul triedy v projekte VBA, pomenujte ho ako PremierExemple (vlastnosť ClassName) a vložte tento kód:Možnosť Explicit, !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
'Povoliť nasledujúce odkazy (Nástroje> Odkazy)
Objektová knižnica Microsoft Forms 2.0
'Microsoft Visual Basic pre rozšírenie aplikácií 5.3
, !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
Verejný formulár ako objekt 'Userform
Verejné WithEvents Bouton Ako MSForms.CommandButton 'Tlačidlo
Verejné Dico ako objekt Objet Dictionnary = Zber objektov
Private Nom As String 'Nom => vytvoriť alebo odstrániť userform
Private Sub Class_Initialize ()
'vytvoriť triedu
Nastaviť Dico = CreateObject ("Scripting.dictionary")
End Sub
Hodnota verejnej funkcie ()
Metóda Value de notre Classe umožňuje vytvorenie užívateľského formulára
'a vráti hodnotu
NewUsf "Mon premier UserForm" "vytvorenie userform
NewBouton "toto", "TOTO", 120, 30, 5, 5 'vytvorte tlačidlo TOTO
NewBouton "titi", "TITI", 120, 30, 5, 35 'vytvoriť tlačidlo TITI
maForm.Show 'zobraziť userform
On Error GoTo fin
Value = maForm.Tag 'priradiť hodnotu obsiahnutú v tagu userformu našej funkcii.
Uvoľnite maForm
Ukončiť funkciu
fin:
Funkcia konca
Súkromné Sub NewUsf (monCaption As String)
Vytvorenie užívateľského formulára
Set maForm = ThisWorkbook.VBProject.VBComponents.Add (3)
Nom = maForm.Name
VBA.UserForms.Add (Nom)
Nastaviť maForm = UserForms (UserForms.Count - 1)
S maForm
.Caption = monCaption
.Width = 150
.Height = 100
Koniec s
End Sub
Verejné Sub NewBouton (názov ako reťazec, titulok ako reťazec, šírka ako dvojitý, výška ako dvojitý, ľavý ako dvojitý, začiatok ako dvojitý)
'Vytvorenie ovládacieho tlačidla
Dim Obj
Nastaviť Obj = maForm.Controls.Add ("forms.CommandButton.1")
Ak Obj = True Potom Exit Sub
Dim cls Ako nový PremierExemple
Nastavte cls.maForm = maForm
Set cls.Bouton = Obj
S cls.Bouton
.Name = Meno
.Caption = Caption
.Posunúť doľava, hore, šírku, výšku
Koniec s
Dico.Add Name, cls
Set cls = Nič
End Sub
Kliknúť na súkromnú podkapitolu ()
'procedúra udalosti pre kliknutie na tlačidlo
maForm.Tag = Bouton.Caption
maForm.Hide
End Sub
Private Sub Class_Terminate ()
'vymazanie triedy
Dim VBComp Ako VBComponent
Set Dico = Nothing 'zmaže všetky inštancie našej triedy => všetky tlačidlá
Ak Nom "" Potom, ak je to userform (jedinečná inštancia s vlastnosťou "Nom" vyplnená)
Nastaviť vyhľadávanie VBComp = ThisWorkbook.VBProject.VBComponents (Nom)
ThisWorkbook.VBProject.VBComponents.Remove VBComp 'odstrániť
Koniec Ak
End Sub
Funkcia volania
Postup volania funkcie je značne zjednodušený ... vďaka modulu triedy máte prístup k užívateľskému formuláru a metóde Value. Vráti sa jednoduchým spôsobom pomocou nižšie uvedeného volacieho kódu:Subtest ()Dim MyForm Ako nový PremierExemple
MsgBox MyForm.Value
Nastavte MyForm = Nothing
End Sub