Miten lisätään objekti suorituksen aikana. Eli kysyn siis koodivinkkiä, miten voin esim. Commandbuttoniin kirjoittaa koodin joka lisää textbox:in lomakkeeseen. Tarvitsisin Vba -koodia.
objektin lisäys
6
506
Vastaukset
- ...
Jos tekstiruudun sijoittaa lomakkeelle ja määrittelee sen ensin näkymättömäksi (esim. Teksti1.Visible=FALSE). CommandButton-kontrollissa Teksti1.Visible=TRUE toisi tekstiruudun uudelleen lomakkeelle näkyviin. Samalla tekstiruudun kokoa ja sijaintia voisi tarvittaessa muuttaa?
- -jk-
VB6:ssa näin; en tiedä, toimiiko VBA:na.
Set txtBox1 = Controls.Add("VB.TextBox", "Text1")
With txtBox1
.Width = 2000
.Height = 300
.Top = 500
.Left = 50
.Visible = True
.Text = "Eka tekstipoksi"
End With
Set txtBox2 = Controls.Add("VB.TextBox", "Text2")
With txtBox2
.Width = 2000
.Height = 300
.Top = 500
.Left = 2250
.Visible = True
.Text = "Toka tekstipoksi"
End With- peetee
Eipä näytä vba:ssa toimivan.
- Petri_Petri
Itse olen tehnyt tuon niin, että olen tehnyt yhden indeksikontrollin formille, koska käsittääkseni ilman sitä ei kontrolleja voi lisätä. Tai se on ainakin helpoin tapa.
Eli lisää formille TextBox:
- laita nimeksi mikä tahansa, vaikka MunTekstiKontrolli
- laita Index-properties nollaksi (jotta se on taulukkokontrolli eli indeksikontrolli)
- laita kontrollin Visible-properties Falseksi, jotta se ei näy formissa
Sitten kun haluat ottaa sen käyttöön, niin muuta kontrollin Visible-properties Trueksi.
Nyt voit myös lisätä TextBoxeja kuinka monta tahansa.
- Kontrollin lisäys: Load MunTekstiKontrolli(1)
- Muuta se näkyväksi: MunTekstiKontrolli(1).Visible=True
- Aseta sille koordinaatit, esim.: MunTekstiKontrolli(1).Top=100:MunTekstiKontrolli(1).Left=500
- Määritä sen koko, esim.: MunTekstiKontrolli(1).Height=1000:MunTekstiKontrolli(1).Width=2000
Sama toimii myös muiden kontrollien kohdalla.- peetee
Tuo ei ilmeisesti toimi vba:ssa, koska siinä ei objekteilla ole ominaisuutta index. Vb 6:ssa tuo kyllä toimii.
- Petri_Petri
peetee kirjoitti:
Tuo ei ilmeisesti toimi vba:ssa, koska siinä ei objekteilla ole ominaisuutta index. Vb 6:ssa tuo kyllä toimii.
Luulin että kysyit sitä VB:stä. En ole paljon tehnyt VBA:lla, mutta täytyihän tuota yrittää.
Sain sen toimimaan Excelillä. Eli kun olet tehnyt formin (joka alla on nimellä "UserForm1"), niin seuraava ohjelmakoodi lisää aina uuden tekstikontrollin. Se tulee suoraan näkyviin, joten visible-propertiesta ei tarvitse asettaa Trueksi. Alla olevassa esimerkissä uusi TextBox tulee edellisen alle, jotta ne eivät mene päällekkäin. Uuden kontrollin tekstisisällöksi tulee sen Y-koordinaatti (eli TOP-properties).
Sub TekstikontrollinLisäys()
'Tämä lisää Excel-formiin uuden tekstiboxin
'Laitetaan se aina 20 pistettä edellisen alle
Dim UusiKontrolli As Control
Static Y
Set UusiKontrolli = UserForm1.Controls.Add("forms.textbox.1")
Y = Y 20
UusiKontrolli.Text = Str$(Y)
UusiKontrolli.Top = Y
End Sub
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa
En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod225124- 254278
- 272441
- 342234
- 371988
- 151908
En ole koskaan kokenut
Ennen mitään tällaista rakastumista. Tiedän että kaipaan sinua varmaan loppu elämän. Toivottavasti ei tarvitsisi vain ka191587- 121521
Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...
Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons211237Kerranki asiat oikein
Ilkka ja muut pienpuolueeet...teitte hyvän työn kun valitsitte pätevän henkilön virkaan eikä kepulle passelia!! Jatkakaa101164