Olen tekemässä exceliin apuohjelmaa vba:lla ja haluaisin lisätä textbox objekteja lomakkeeseen suorituksen aikana.
En tiedä onko se mahdollista, mutta haluaisin commanbuttonia klikkaamalla lisätä textboxeja lomakkeeseen "n" määrän.
Mitenkäs tuo tapahtuisi kaikkein näppärimmin?
Luo kontrollitaulukko, johon sitten lisäät objekteja Load-komennolla (poisto onnistuu UnLoad:lla).
Mitenköhän sitten tuo kontrollitaulukon luominen onnistuu?
luo yksi kontrolli ja anna sille indeksi (0).
sitten voit ladata niitä Load kontrolli(numero)
tai vaikka silmukassa:
for i = 1 to 10 load kontrollis_nimi(i) next
edit: tulipas pistettyä tyhmä virhe :P
Kiitos vinkistä, mutta vba:ssa ei imeisesti ole ominaisuutta index? Vb 6:ssa tuo kyllä toimii.
Eipä näköjään ole, UserFormin Controls-kollektionista sen sijaan näyttäisi löytyvän Add-metodi.
Me.Controls.Add "Forms.CommandButton.1", "muuli", True
Rinse&repeat.
Ratkaisin probleeman tälläisella koodilla. Mutta, mistä tiedän, miten uudet textboxit on nimetty? Vai voinko nimetä ne jotenkin itse?
Dim Txtbox1(0 To 10)
X = 30 'X changes the "top" property
For j = 0 To 10
Set Txtbox1(j) = Controls.Add("Forms.Textbox.1", , True) 'True = Visible
X = X + 20
Txtbox1(j).Width = 125
Txtbox1(j).Height = 15.75
Txtbox1(j).Top = X + 36
Txtbox1(j).Left = 24
Next j
Boksin nimi määritellään tuossa Controls.Add -metodin toisessa parametrissa, tuossa esimerkissäni se tulisi olemaan "muuli".
Ymmärrän, mutta mitenkäs tuossa silmukkatapauksessa. Miten voin esim. commandbutton aliohjelmassa viitata kyseiseen textboxiin? Esim. textbox?.text="kokeilu".
Voi olla, että ratkaisu on yksinkertainen, mutta olen vasta aloittelija.
No kun sulla kerran on nuo referenssit tallessa tuossa Txtbox1 -taulussa, niin voit tehdä TxtBox1(indeksi).Text = "Muuli"
Jos niitä ei ois, niin voisit ahkea halutun kontrollin Controls-kollektionin Item-metodilla, Controls.Item("munboksi").Text = "Muuli"
Aihe on jo aika vanha, joten et voi enää vastata siihen.