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
560
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
Natomaa hyökkäsi Iraniin
Näemme nyt tällä hetkellä Natomaan nimeltä Yhdysvallat, joka toimii aika pitkälti perinteisen kansainvälisen lain ulkopu7202740Trump aloitti III maailmansodan tänään.
Narsisti ja mielipuoli Trump pitäisi saada pois, miten se onnistuisi parhaiten?3472387Mistä se kertoo
Näin miehen pitkästä aikaa. Samantien iski sellainen paineen tunne rintaan, sitä ei ole ollut vuosiin. Ja nyt olen siitä262182Suvi Lindenillä 5 366 päivän putki
Täytyy kyllä myöntää vaikka olen itsekin innokas, niin en ole tuollaiseen yli kymmenen vuoden putkeen kyennyt. Välillä o342136Rakas tiedät, että toivoisin
Kuulevani sinusta. Tiedät, että viestisi tekisi minut ihan onnelliseksi. Että äänesi kuuleminen saisi minut leijumaan ja581768Viesti miehelle
Nyt vastaa oikea taa´app. Ainoastaan puhelimitse voidaan selvittää asioita, mutta tuskin sitä haluat kaiken halveeramise121292Nyt on sanottava että sattuu kipeästi
Jos, sinä aikana kun olen kaivannut ja odottanut sinua ja olet tiennyt sen, niin jos valitsit toisen miehen. Katsot minu181289- 661145
- 551140
Jussi "Mestari" Halal-ahon sotilasarvo?
Minä vuonna Jussille myönnettiin sotilasansiomitali? Vai myönnettiinkö Jussille sotilasansiomitalia lainkaan?41105