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
584
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 Purra leikkasi alimmalta tulodesiililtä 15 %
Muistaako kukaan Riikka Purran kovaäänisen vaalilupauksen ennen eduskuntavaaleja? https://yle.fi/a/74-20221152 "THL o1494872Sofia Virta: bänet!
Matkailuautoilija metsänomistaja puoliso on nyt entisen teeren poikia, ja Sofia tekee comebackin vapaille markkinoille.942090"Suomi voisi ottaa taloudessa oppia Espanjasta"
"Espanjassa talouspolitiikka on löysempää, mutta velka-aste on kääntynyt jopa laskuun.", pohdiskelee Suomen seuraava pää1821860Kokoomus: SDP johtaa kansalaisia harhaan
(Umpityhmät palstademarit ovat taas uskoneet Lindtmanin höpötykset Espanjasta.) SDP harhaanjohtaa kansalaisia talouspol571474Talousasiantuntija sanoo säästämisestä
" parin kuukauden tulo on sellainen, joka voi olla vaikka tilillä tai jossain korkorahastossa, eikä se ole tuottohakuine2671278Lieksa tukee kuntoutumista reilusti
Lieksan sosiaalitoimi käynnistää uuden tukihankkeen – työttömille veneitä hyvinvoinnin edistämiseksi Lieksan sosiaalito811110Siinäpä jäät
Punapää kaipaamaan, kun päätän maallisen vaellukseni. Oma oli valintasi. Sillä minä en jaksa enää kovin pitkää tätä. Ole79969Muistele nainen niitä meidän yhteisiä hetkiä
Miltä ne tuntui? Enkö aina huokunut välittämistä, kiintymystä. Eikö sinulla aina ollut hyvä olo kanssani? Minulla ainaki11931Nato on käytännössä kuollut!
Puolustusliitto Nato on toki natissut liitoksistaan ennenkin, mutta koskaan aiemmin sen vahvin maa Yhdysvallat ei ole uh283920Oot mun sielunpuolikas
Nainen. Harmi vaan että tavattiin väärään aikaan ja synnyttiin tälle planeetalle eri aikaan. 👩❤️👩❤️44852