VBA - Kaip sukurti „UserForm“ klasės modulyje
- Būtinos sąlygos
- Kodas
- Klasės modulis
- Skambinimo funkcija
Būtinos sąlygos
Eikite į „ Excel“ parinktis > „ Trust Management“ > „ Macro Settings“ ir įsitikinkite, kad įjungta ši parinktis: pasitikėkite prieiga prie „VBA“ projekto objekto modelio .Kodas taip pat reikalauja toliau pateiktų nuorodų, būtent „ Microsoft Forms 2.0“ objekto bibliotekos ir „ Microsoft Visual Basic“ programų išplėtimui 5.3 . Juos galite įgalinti spustelėję VBA redaktoriaus meniu Įrankiai ir tada - Nuorodos .
Kodas
Šiame pavyzdyje sukursime naudotojo formą, kurioje yra du mygtukai. Paspaudus šiuos mygtukus, jų antraštė bus rodoma skambinimo funkcijos kode.Klasės modulis
Sukurkite klasės modulį VBA projekte, pavadinkite jį kaip „ PremierExemple“ („ ClassName“ nuosavybė) ir įterpkite šį kodą:Galimybė aiški„!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
„Įgalinti šias nuorodas (Įrankiai> Nuorodos)
„Microsoft Forms 2.0 Object Library“
„Microsoft Visual Basic“ taikomųjų programų išplėtimui 5.3
„!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
Viešasis „maForm“ kaip objekto „naudotojo“ formos
Visuomenė su „Bouton“ kaip „MSForms.CommandButton“ mygtukas
Viešasis „Dico As Object“ Objet Dictionnary = Objektų rinkimas
Privatus Nom. Kaip eilutė „Nom => sukurti arba ištrinti naudotojo formą
Privatus pogrupis_Initialize ()
sukurti klasę
Nustatyti Dico = CreateObject („Scripting.dictionary“)
Pabaiga
Viešosios funkcijos vertė ()
„Value de notre Classe“ metodas leidžia sukurti vartotojo formą
ir grąžina vertę
„NewUsf“ „Mon premier UserForm“ „sukuria naudotojo formą
„NewBouton“ „toto“, „TOTO“, 120, 30, 5, 5 'sukuria mygtuką TOTO
„NewBouton“ „titi“, „TITI“, 120, 30, 5, 35 'sukuria TITI mygtuką
„maForm.Show“ rodoma vartotojo forma
Apie klaidą GoTo fin
„Value = maForm.Tag“ priskiria reikšmę, esančią „Userform“ žymoje, mūsų funkcijai.
Išimkite maForm
Išjunkite funkciją
fin:
Pabaigos funkcija
Privatus sub NewUsf (monCaption kaip eilutė)
„Naudotojo kūrimas
Nustatyti maForm = ThisWorkbook.VBProject.VBComponents.Add (3)
Nom = maForm.Name
VBA.UserForms.Add (Nom)
Nustatyti maForm = UserForms (UserForms.Count - 1)
Su maForm
.Caption = monCaption
. Plotis = 150
.Height = 100
Baigti su
Pabaiga
Viešasis „NewBouton“ (pavadinimas kaip eilutė, antraštė kaip eilutė, plotis kaip dvigubas, aukštis kaip dvigubas, kairysis kaip dvivietis, viršutinis kaip dvigubas)
„Valdymo mygtuko sukūrimas
Dim Obj
Nustatyti Obj = maForm.Controls.Add („formas.CommandButton.1“)
Jei Obj = Tiesa, tada išeiti iš sub
„Dim cls“ kaip „New PremierExemple“
Nustatyti cls.maForm = maForm
Nustatyti cls.Bouton = Obj
Su cls.Bouton
.Name = Vardas
.Caption = antraštė
.Perkelti į kairę, viršų, plotį, aukštį
Baigti su
Dico.Add Name, cls
Set cls = Nieko
Pabaiga
Privatus Sub Bouton_Click ()
„mygtuko paspaudimo įvykių procedūra“
maForm.Tag = Bouton.Caption
paslėpti
Pabaiga
Privatus poklasis_pasirašykite ()
klasės ištrynimas
„Dim VBComp As VBComponent“
Nustatyti Dico = Nieko „ištrinkite visus mūsų klasės => visų mygtukų atvejus
Jei Nom "" Tada ", jei tai yra naudotojo forma (unikalus egzempliorius, turintis užpildytą" Nom "nuosavybę)
Nustatykite VBComp = ThisWorkbook.VBProject.VBComponents (Nom) paiešką
ŠisWorkbook.VBProject.VBComponents.Remove VBComp 'ištrinti
Baigti Jei
Pabaiga
Skambinimo funkcija
Skambinimo funkcijos procedūra labai supaprastinta ... dėka klasės modulio, turite prieigą prie naudotojo ir vertės metodo. Jis grąžinamas paprastu būdu, naudojant žemiau nurodytą skambinimo kodą:Sub bandymas ()„MyForm“ kaip naujas „PremierExemple“
MsgBox MyForm.Value
Nustatyti MyForm = Nieko
Pabaiga