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
594
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
Riikka runnoo: datakeskuksille tulee UUSI yritystuki
"Suomen valtio erikseen tukee esimerkiksi kryptovaluuttaan tai aikuisviihteeseen tai muuhun keskittyviä datakeskuksia."562215Eläkeläiset siirrettävä muuttotappioalueille
Joutoväki pois ruuhkauttamasta elättäjien arkea. Samalla putoaa jokaisen asumiskulut ja rahaa jää enemmän kuluttamiseen.2012051- 1161392
En kerro nimeäsi nainen
Sillä olet nyt salaisuus jota kannan sydämessäni. Tämä mitä tunnen ja kuinka sinuun vahvasti ihastuin on jo niin erikoin711180- 96995
Olet kiva ihminen
En kiellä sitä yhtään. Sinussa on hyvin paljon erinomaisia puolia, enemmän varmasti kun meissä muissa. Sitten on puoli73939Auta mua mies
Ota vielä yhteyttä, keksi oikeat sanat että vuosien ajan kasvanut muuri murtuu meidän väliltä vaikka aluksi vain vähän.78889Uuden upotuskasteen vaiettu ongelma
Alkuseurakunnan kaste oli useamman vuosisadan upotuskaste, joka toimitettiin joko ulkona luonnon vesistöissä tai kasteki58887Ja tääkin vielä...
Kukakohan on valittanut, Salmiko itse? https://www.viiskunta.fi/rehtori-valittiin-ahtarissa-ilman-hakumenettelya-o/1347933855- 61746