Ihmeellinen ongelma:
yritän VBA:ssa saada formilla olevan testiboksin kiinni monien joukosta. Se onnistuu kun kirjoitan boksin nimen suoraan. Mutta kun pitäisi koota boksin nimi kahdesta osasta (sijoitettu stringiin), niin enpäs osaakaan....
eli toimii: boksi_1.backcolor = musta
mutta ei toimia a= "boksi_" & "1" a.backcolor = musta
Eikö näin muka voi tehdä --- kai siihen boksiin nyt jotenkin muutenkn saisi kiinni kuin tuolla ekalla tavalla.... ?
yritän VBA:ssa saada formilla olevan testiboksin kiinni monien joukosta. Se onnistuu kun kirjoitan boksin nimen suoraan. Mutta kun pitäisi koota boksin nimi kahdesta osasta (sijoitettu stringiin), niin enpäs osaakaan....
eli toimii: boksi_1.backcolor = musta
mutta ei toimia a= "boksi_" & "1" a.backcolor = musta
Eikö näin muka voi tehdä --- kai siihen boksiin nyt jotenkin muutenkn saisi kiinni kuin tuolla ekalla tavalla.... ?
Vastaukset 2
Vanhimmat
Et voi merkkijonona antaa formin nimeä sillä sitä VB ei ymmärrä.
Voit tehdä homman ainakin kahdella eri tavalla.
Tapa 1:
'Määritä formit taulukkona:
Dim Boksiformit(10) as form
'aseta formit taulukkoon
'viitataan siis formin nimellä
set Boksiformit(1)=Boksi_1
set Boksiformit(2)=ToinenBoksiForm
'nyt voit viitata numerolla
Boksiformit(N).backcolor=musta
Tapa2: Etsi formi taulukosta. Tee funktio, joka palautaa formin nron. Forms-käskyllä voit viitata formiin numeroilla.
'funktio palautaa formin nron ja -1 jos formia ei ole
Function PalautaFormNro(ForminNimi$)
dim i%
for i=0 to forms.count-1
if forms(i).name=ForminNimi$ then PalautaFormNro=i:exit function
next i
PalautaFormNro=-1'ei ole
End Function
'Ohjelmakoodissa voit nyt toimia näin
dim F%
F=PalautaFormNro("Boksi_1")
if f-1 then forms(F).backcolor=musta
Forms siis on VB:n sisäinen ominaisuus.
Hienosti ajateltu!