< návrat zpět

MS Excel


Téma: vratit proměnnou rss

Zaslal/a 13.1.2024 21:48

Zdravím.
Pomocí makra : Call ZmenPromennou (hodnotaX) , dokážu zavolat druhé makro ZmenPromennou , kde se tato hodnotaX kodem změní, ale nedokážu ji vrátit mateřskému Makru zpět. Je na to nějaký fígl ? Ta změněná se mi při ukončení ZmenPromennou ztratí.

Díky
P

Zaslat odpověď >

#055938
avatar
Ty máš dve rovnaké Makra? ZmenPromennou?citovat
#055939
elninoslov
"Je na to nějaký fígl ?"
Áno, v rekurzii je - ByRef deklarácia premennej.
Ide len o to, ktorí predok má dostať zmenenú hodnotu. Každý? Ak iba priamy predok a nie aj ďalší pred ním, tak sa musí urobiť kópia premennej do lokálnej premennej a tá sa odošle ako ByRef parameter.
Uveďte presný príklad použitia a požadovaného správania, nech sa vysomárime.citovat
#055940
avatar
Asi už jsem na to přišel.

Když předávám Byref tak se mi ta hodnota zmenená i vrátí zpet a Byval zustane jen v tom druhem makru. Je to tak?.citovat
#055941
avatar
...tak asi nee

hodnoty se mi nevrátí, proč?

PrvniPrazdnyR
PosledniPlnyRadek
Příloha: zip55941_predej-promennou-a-vrat-ju.zip (18kB, staženo 3x)
citovat
#055942
Stalker
V Tool -> Options na kartě Editor zaškrtni checkbox "Require Varible Declaration"
To tě dokope řádně deklarovat proměnné. Při předávání parametrů dávej pozor na jejich pořadí. Porovnej si kódy mezi sebou.
Příloha: zip55942_predej-promennou-a-vrat-ju.zip (18kB, staženo 3x)
citovat
#055946
avatar
Děkuji!
Netušil jsem , že záleží i na pořadí.citovat
#055947
Začátečník
Parametry se do procedury/funkce, musí vždy předávat v pořadí v jakém jsou v dané proceduře/funkci deklarovány.

Pokud je parametr v proceduře/funkci označen jako volitelný (Optional) pak se nemusí předat a při volání procedury/funkce musí být "nevyplněn".
např.:
Sub Test
Dim parametr1 as Long, parametr3 as Long
Dim coVrati as long

parametr1=5
parametr3=10

coVrati= mujTest(parametr1, , parametr3) ' součet parametr1+parametr3
'coVrati=15
coVrati= mujTest(parametr1, False, parametr3) 'rozdíl parametr1-parametr3
'coVrati=-5
End sub

Function mujTest(param1, Optional param2=True,param3)
...
if param2 then
mujTest=param1+param3
else
mujTest=param1-param3
endif

End function
citovat
#055949
avatar
ok.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

rozpis zápasů hráčů pro utkání dvou týmů

Anonym • 25.5. 11:54

Hromadné přepsání

elninoslov • 24.5. 10:29

Hromadné přepsání

Nomi • 24.5. 8:32

Index - každý rok začít od 1 Power Query

Alfan • 23.5. 9:17

nepřímý odkaz

elninoslov • 23.5. 0:00

nepřímý odkaz

bordov • 22.5. 18:35

vrácené hodnoty

Anonym • 22.5. 15:46