Private Sub Form_Activate() Liiku.Interval = 10 Randomize Timer suunta = 2 Robo.Left = Int(Rnd * Form1.Height) Robo.Top = Int(Rnd * Form1.Width) End Sub Private Sub Liiku_Timer() If suunta = 1 Then Robo.Top = Robo.Top + 100 'alas If suunta = 2 Then Robo.Top = Robo.Top - 100 'ylös If suunta = 3 Then Robo.Left = Robo.Left - 100 'vasemmalle If suunta = 4 Then Robo.Left = Robo.Left + 100 'oikealle End Sub
Tuonhan pitäisi liikuttaa tuoa Roboa ylöspäin, mutta ei liikuta. Jos laitan suunnan tuohon Liiku_Timer():in kohdalle, se toimii, mutta haluaisin tietää metenkä voi määritellä tuon muuttajan johonkin toiseen subiin niin että se toimii...
Sinun täytyy tehdä suunta-muuttujasta globaali eli kaikissa aliohjelmissa säilyvä. Globaalit muuttujat määritellään kooditiedoston alussa, (declarations)-osassa. Muuta siis tuon koodin alkuun esimerkiksi muotoon:
Dim suunta As Integer Private Sub Form_Activate() 'jne...
lainaus:
Jos laitan suunnan tuohon Liiku_Timer():in kohdalle, se toimii, mutta haluaisin tietää metenkä voi määritellä tuon muuttajan johonkin toiseen subiin niin että se toimii...
Laita formin General-osioon (eli koodissa ihan sinne ylös) rivi
Dim suunta As Integer (tai As Byte käy ihan hyvin)
Nyt suunta muuttuja näkyy formilla kaikille aliohjelmille.
PS. Tuo Form_Activate subissa olevat Robo.Left ja Robo.Top kannattaisi laittaa näin päin niin liikkuu loogisesti:
Robo.Left = Int(Rnd * Form1.Width) Robo.Top = Int(Rnd * Form1.Height)
edit: Antti ehti kirjoittaa ennemmin :)
Kannattaa muuten myös käyttää "Option Explicit" -avainsanaa niin muuttujat on muistaakseni pakko määritellä.. tuossahan VB luo kummallekin funktiolle oman "suunta"-muuttujan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.