< návrat zpět

MS Excel


Téma: Odkaz rss

Zaslal/a 29.1.2014 7:27

Zdravím,

potřeboval bych poradit:
Z jednoho UF se potřebuji odkázat na jiný UF a na jeho následnou Page3 v Multipage1.
V rámci jednoho UF řeším přechod mezi Page tímto: MultiPage1.Value = MultiPage1.Pages("Page3").Index, ale netuším, jak přidat do této cesty název UF. Díky za tip

Zaslat odpověď >

icon #017570
eLCHa
Uff - za celou dobu, co dělám s excelem, jsem měl 2 najednou otevřené formuláře pouze několikrát, ale neměly spolu nic společného (jeden něco vyplňoval a druhý mi zobrazil skryté řádky). Natož abych propojoval jejich MultiPage. Co to propánakrále programujete? ;))))

Nebudu si to vytvářet, takže nemůžu odzkoušet, jen tipuji něco takového
Userform1.MultiPage1.Value = Userform2.MultiPage1.Pages("Page3").Index
A ještě tipuji, že oba musí být načtené (mohou být skryté)citovat
#017571
avatar
Vyzkouším to, díky.
Nebudou otevřené současně. Předchozí se zavře a otevře se ten odkazovaný. Je to takový krok zpět na předchozí UF:-)citovat
icon #017572
eLCHa
No - pokud se napřed jeden zavře a pak druhý otevře, tak si nejdříve hodnotu z prvního načtěte do proměnné a a potom v druhém ji natáhněte z ní.citovat
#017573
avatar
Tak se mě to nějak nezdařilo..
Mám několik UF formulářů na vyplňování dotazníků. Přepínám se mezi nima klasicky UF.show, ale ten jeden UF má právě Multipage a já se potřebuji dostat na tu určitou page.citovat
icon #017574
eLCHa
Těžko říct
Asi proměnná na úrovni modulu, např:

Public iPage as byte
iPage = hodnota z 1. Userform1

Pak v Userform2 načíst tu hodnotu z iPage
jinak to nepude
ale bez přílohy ...citovat
#017582
avatar
Moc jsi toho nenapsal.

Pokud chceš předávat/číst data, tak bez nároku na úplnost možnosti:

Použít nějakou public proměnnou někde trvale v paměti, do které jeden UF zapisuje, druhý UF čte. (napsáno obecně, pokud to hodně přeženu, lze komunikovat i přes registr)

Prakticky použij "normální" modul, který může obsahovat jen jednu public proměnnou. Výhoda je, že jednotlivé UF jsou poměrně nezávislé.

Další možností je využití faktu, že UF je jen zamaskovaný class. K jednotlivým prvkům se dostaneš přes collection UF.Controls, kterou si můžeš nějak přebrat. Pamatuj, že v tomto případě oba UF musí být v paměti a že se musíš postarat o synchronizaci obou UF (load/show + hide/unload).

Asi jednodušší alternativou předchozího je použití Property Get/Let
Prostě v UF2 napíšeš (třeba)


Public Property Get MPIndex(Page as string) as integer
MPIndex = MultiPage1.Pages(page).Index
end property


a v UF1 zapíšeš
MultiPage1.Value = UF2.MPIndex("Page3")


Zase ale platí, že oba UF musí být v paměti a musíš je nějak synchronizovat.citovat
#017591
avatar
Díky za rady. Nakonec jsem to vyřešil:
Unload Me
UserForm1.Show
UserForm1.MultiPage1.Value = UserForm1.MultiPage1.Pages("Test3").Index
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

Čas od do

lubo • 19.4. 16:30

Makro smyčka

MilanKop • 19.4. 10:46

Makro smyčka

elninoslov • 19.4. 9:02

Čas od do

elninoslov • 19.4. 8:46

Čas od do

jarek1111 • 18.4. 13:46

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32