VBA - kuidas luua kasutajamoodul klassi moodulis

Looge UserForm, mis sisaldab dünaamilist arvu juhtelemente, ja veenduge, et neid käivitavad teatud sündmused. Selle tulemuse saavutamiseks kasutame me UserForm'i ja klassi moodulit ning omistame igale kasutajaliideses dünaamiliselt loodud klassi moodulile. Lõpuks on selle juhendi eesmärk saada ka üks moodul ja muuta helistaja funktsioon võimalikult lihtsaks (piiratud 2-3 koodireaga).

  • 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

Eelmine Artikkel Järgmine Artikkel

Top Näpunäited