VBA - kuidas luua kasutajamoodul klassi moodulis

- Eeltingimused
- Kood
- Klassimoodul
- Helistaja funktsioon
Eeltingimused
Avage Exceli valikud > Usalduse haldamine > Makro seaded ja veenduge, et järgmine valik on lubatud: Usaldage juurdepääsu VBA projektiobjekti mudelile .Kood nõuab ka allpool toodud viiteid, nimelt Microsoft Forms 2.0 objekti raamatukogu ja Microsoft Visual Basic rakenduste laiendamiseks 5.3 . Saate need lubada, klõpsates VBA redaktori tööriistade menüüs ja seejärel viites Viited .
Kood
Selles näites loome me kasutajavormi, mis sisaldab kahte nuppu. Nuppudele klõpsates kuvatakse nende pealdis helistaja funktsiooni koodis.Klassimoodul
Looge oma VBA projektis klassimoodul, nimetage see PremierExemple (ClassName'i omaduseks) ja sisestage see kood:Valik Selgesõnaline'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
'Luba järgmised viited (Tööriistad> Viited)
'Microsoft Forms 2.0 objekti raamatukogu
Microsoft Visual Basic rakenduste laiendatavuse jaoks 5.3
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
Avalik maForm kui objekti kasutajavorm
Avalik üritus Bouton nagu MSForms.CommandButton 'nupp
Avalik Dico kui objekt 'Objet Dictionnary = Objekti kogumine
Eraldi nimega stringina „Nom => kasuta või kustuta kasutajavorm
Privaatne alamklass_Initialize ()
looge klass
Määra Dico = CreateObject ("Scripting.dictionary")
Lõpeta alam
Avalike funktsioonide väärtus ()
„Value de notre Classe'i meetod võimaldab luua kasutajavormi
ja tagastab väärtuse
NewUsf "Mon premier UserForm" kasutajaprofiili loomine
NewBouton "toto", "TOTO", 120, 30, 5, 5 'loob TOTO nupu
NewBouton "titi", "TITI", 120, 30, 5, 35 'loob TITI nupu
maForm.Show 'kuvab kasutaja vormi
Viga GoTo fin
Value = maForm.Tag 'omistage väärtus, mis sisaldub kasutaja vormi siltis, meie funktsioonile.
Eemaldage maForm
Välju funktsioonist
fin:
Lõppfunktsioon
Private Sub NewUsf (MonCaption kui String)
„Kasutajavormi loomine
Set maForm = ThisWorkbook.VBProject.VBComponents.Add (3)
Nom = maForm.Name
VBA.UserForms.Lisa (Nom)
Määra maForm = UserForms (UserForms.Count - 1)
MaFormiga
.Caption = monCaption
. Laius = 150
.Kõrgus = 100
Lõpeta
Lõpeta alam
Avalik sub-NewBouton (nimi stringi kujul, pealdis stringi kujul, laius kahekordselt, kõrgus kahekordselt, vasakpoolne kahekordse, top kui topelt)
„Juhtnupu loomine
Dim Obj
Määra Obj = maForm.Controls.Add ("vormid.CommandButton.1")
Kui Obj = Tõeline Seejärel Välju
Dim cls nagu uus PremierExemple
Set cls.maForm = maForm
Määrake cls.Bouton = Obj
Mis cls.Bouton
.Nimi = Nimi
.Caption = Caption
.Liiguta vasakule, ülevalt, laiusele, kõrgusele
Lõpeta
Dico.Lisa nimi, cls
Set cls = Miski pole
Lõpeta alam
Privaatne Sub Bouton_Click ()
'nupu klõpsamise sündmuse toiming
maForm.Tag = Bouton.Caption
MaForm.Hide
Lõpeta alam
Privaatne alamklass_Terminate ()
klassi kustutamine
Dim VBComp Nagu VBComponent
Määra Dico = Miski ei kustuta kõiki meie klassi eksemplare => kõiki nuppe
Kui Nom "" siis kui see on kasutajavorm (unikaalne eksemplar, millel on "Nom" omadus täidetud)
Määrake VBComp = ThisWorkbook.VBProject.VBComponents (Nom) otsing
SeeWorkbook.VBProject.VBComponents.Remove VBComp 'kustutamine
Lõpeta kui
Lõpeta alam
Helistaja funktsioon
Helistamisfunktsiooni protseduur on oluliselt lihtsam ... tänu klassimoodulile on teil juurdepääs kasutajaformaadile ja väärtuse meetodile. See tagastatakse lihtsal viisil, kasutades allolevat helistamiskoodi:Sub-test ()Dim MyForm nagu uus PremierExemple
MsgBox MyForm.Value
Määra MyForm = midagi
Lõpeta alam