VBA - Jak vytvořit UserForm v modulu třídy
- Předpoklady
- Kód
- Modul třídy
- Funkce volání
Předpoklady
Přejděte do Možnosti aplikace Excel > Správa důvěryhodnosti > Nastavení maker a zkontrolujte, zda je povolena následující možnost: Důvěryhodný přístup k modelu objektu objektu VBA .Kód také vyžaduje níže uvedené odkazy, konkrétně knihovnu objektů Microsoft Forms 2.0 a Microsoft Visual Basic for Applications Extensibility 5.3 . Můžete je povolit klepnutím na nabídku Nástroje editoru VBA a potom na odkazy .
Kód
V tomto příkladu vytvoříme userform obsahující dvě tlačítka. Po kliknutí na toto tlačítko se jejich popisek zobrazí v kódu volající funkce.Modul třídy
Vytvořte modul třídy v projektu VBA, pojmenujte jej jako PremierExemple (vlastnost ClassName) a vložte tento kód:Možnost Explicit'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
'Povolit následující odkazy (Nástroje> Odkazy)
Knihovna objektů Microsoft Forms 2.0
'Microsoft Visual Basic pro rozšiřitelnost aplikací 5.3
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
Veřejná forma jako objekt 'Userform
Veřejné WithEvents Bouton jako MSForms.CommandButton 'tlačítko
Veřejný dico jako objekt Objet Dictionnary = Sbírka objektů
Private Nom As String 'Nom => vytvořit nebo odstranit userform
Private Sub Class_Initialize ()
'vytvořit třídu
Nastavit Dico = CreateObject ("Scripting.dictionary")
End Sub
Hodnota veřejné funkce ()
Metoda Value de notre Classe umožňuje vytvoření uživatelského formuláře
'a vrátí hodnotu
NewUsf "Mon premier UserForm" "vytvoření userform
NewBouton "toto", "TOTO", 120, 30, 5, 5 'vytvoří tlačítko TOTO
NewBouton "titi", "TITI", 120, 30, 5, 35 'vytvoří tlačítko TITI
maForm.Show 'zobrazit userform
Zapnuto Chyba GoTo fin
Value = maForm.Tag 'přiřadit hodnotu obsaženou v tagu userformu naší funkci.
Uvolněte maForm
Funkce Konec
ploutev:
Funkce End
Soukromý Sub NewUsf (monCaption As String)
'Vytvoření uživatelského formuláře
Nastavit maForm = ThisWorkbook.VBProject.VBComponents.Add (3)
Nom = maForm.Name
VBA.UserForms.Add (Nom)
Nastavit maForm = UserForms (UserForms.Count - 1)
S maFormem
.Caption = monCaption
.Width = 150
.Height = 100
Konec s
End Sub
Public Sub NewBouton (název jako řetězec, titulek jako řetězec, šířka jako dvojitý, výška jako dvojitý, vlevo jako dvojitý, horní jako dvojitý)
'Vytvoření ovládacího tlačítka
Dim Obj
Nastavit Obj = maForm.Controls.Add ("forms.CommandButton.1")
Pokud Obj = True pak Exit Sub
Dim cls Jako nový PremierExemple
Nastavte cls.maForm = maForm
Nastavit cls.Bouton = Obj
S cls.Bouton
.Name = Jméno
.Caption = Titulek
.Vlevo, nahoru, šířka, výška
Konec s
Dico.Add Name, cls
Set cls = Nic
End Sub
Soukromý podřízený Bouton_Click ()
'procedura události pro kliknutí na tlačítko
maForm.Tag = Bouton.Caption
maForm.Hide
End Sub
Soukromý dílčí název třídy ()
vymazání třídy
Dim VBComp Jako VBComponent
Set Dico = Nothing 'odstraní všechny instance naší třídy => všechna tlačítka
Pokud Nom "" Potom, pokud je to userform (jedinečná instance s vyplněnou vlastností "Nom")
Nastavení VBComp = ThisWorkbook.VBProject.VBComponents (Nom) 'hledání
ThisWorkbook.VBProject.VBComponents.Remove VBComp 'odstranit
Konec Pokud
End Sub
Funkce volání
Procedura pro volání funkce je značně zjednodušena ... díky modulu třídy máte přístup k metodě userform a Value. Vrátí se jednoduchým způsobem pomocí níže uvedeného volacího kódu:Subtest ()Dim MyForm jako nový PremierExemple
MsgBox MyForm.Value
Nastavit MyForm = Nothing
End Sub