to máš dobře, to ti asi funguje přesně jak má. Problém je ten, že v době kdy ty hodnoty přenášíš máš v room2.Label1.Caption hodnotu Label1 (výchozí caption pro nově přidaný label) a v room2.Label2.Caption máš hodnotu Label2. Nebo ti to "pod rukama" zase mění ještě jiná procedura nebo funkce. Obecně pro hodnoty používané "napříč" aplikací, je nejlepší použít nějaké globálně dostupné proměnné.
Public Body as Long
Public MaximalniBody as Long
A potom používat funkce které s těmi body mají nějak pracovat...
Private Function PripocitejBodyZaZasah (Byval ZasazenyObjekt as String, ByRef AktualniPocetBodu as Long) As Boolean
Dim temp_Body As Long
Select Case UCASE(ZasazenyObjekt)
Case "SLON": temp_Body = 10
Case "VLK": temp_Body = 20
Case "KACENA": temp_Body = 30
Case "PUMA": temp_Body = 50
Case "ZAJIC": temp_Body = 100
Case "SERIF": temp_Body = 200
Case "POMOCNIK": temp_Body = -100
Case Else 'nelze najit zasazeny objekt...
'proto fuknci predcasne ukoncime a nahlasime neuspech
Return False
End Select
AktualniPocetBodu = AktualniPocetBodu + temp_Body
Return True
End Function
'Volani takove funkce pak vypada takto:
Body = 10
Debug.Print Body 'vypise 10
Dim vysledek as Boolean
'Zavolame funkci PripocitejBodyZaZasah, te predame promennou
'Body vcetne jejiho obsahu. Pri opousteni teto funkce, bude
'hodnota z vnitrni promenne AktualniPocetBodu funkce 'PripocitejBodyZaZasah ulozena zpet do promenne Body.
'Po dokoknceni prepocitavani se tudiz hodnota promenne Body zmeni.
'Za to muze slovicko ByRef misto ByVal v deklaraci funkce PripocitejBodyZaZasah.
Vysledek = PripocitejBodyZaZasah("zajic",Body)
If Vysledek = False Then
Debug.Print "Zasazeny cil nelze zjistit"
Else
Debug.Print Body 'Vypise 110
End If
|