Hei,
miten voin käynnistää VBA:ssa jonkin koodin suorituksen toisen koodin suorituksen aikana?
Tarkoitan sitä että kun minulla on vaikkapa kaksi oliota ja tapahtumaa; CommandButton1.Click ja ComboBox1.Change, niin miten voin käynnistää CommandButton1.Click -koodissa olevalla käskyllä ComboBox1.Change -koodin suorituksen välittömästi?
Nyt teen kyseisen tempun lukemalla comboboxin arvon muistiin ja kirjoittamalla ensin comboboxiin tyhjän arvon ja edelleen äsken muistiin luetun arvon. ComboBox1.Change -ohjelman alussa koodin suoritus keskeytetään jos combon arvo on tyhjä. Toimii kyllä, mutta ei kovin fiksua...
-Pasi-
miten voin käynnistää VBA:ssa jonkin koodin suorituksen toisen koodin suorituksen aikana?
Tarkoitan sitä että kun minulla on vaikkapa kaksi oliota ja tapahtumaa; CommandButton1.Click ja ComboBox1.Change, niin miten voin käynnistää CommandButton1.Click -koodissa olevalla käskyllä ComboBox1.Change -koodin suorituksen välittömästi?
Nyt teen kyseisen tempun lukemalla comboboxin arvon muistiin ja kirjoittamalla ensin comboboxiin tyhjän arvon ja edelleen äsken muistiin luetun arvon. ComboBox1.Change -ohjelman alussa koodin suoritus keskeytetään jos combon arvo on tyhjä. Toimii kyllä, mutta ei kovin fiksua...
-Pasi-
Vastaukset 3
Vanhimmat
käy ihan vaan:
ComboBox1.Change(kenties jotain parametria)
En ole ihan varma, mitä tarkoitit, mutta jos suunnilleen...
Yleensäkin kannattaa tehdä siitä suoritettavasta jutusta funktio, aliohjelma, jota sitten kutsutaan milloin mistäkin, vaikka Command-painikkeesta tai ComboBoxin Change:sta.
Eli itse nappuloihin tai muihin objekteihin ei kannata paljoa koodata, ei tarvitse toistaa samaa koodia moneen kertaan kun sen kirjoittaa funktioksi, aliohjelmaksi.
esimerkissä funktiota "tulosta" kutsutaan aina kun Combo1 arvo muuttuu, paitsi jos se on tyhjä,
ja Command1-painikkeella kutsutaan samaa funktiota.
Function tulosta()
Label1.Caption = Combo1.Text
End Function
Private Sub Combo1_Change()
If Combo1.Text "" Then Call tulosta
End Sub
Private Sub Command1_Click()
Call tulosta
End Sub
vastasit juuri siihen mitä tarkoitinkin, kiitos!
-Pasi-