< návrat zpět

MS Excel


Téma: Nezobrazení formuláře excel 2013 rss

Zaslal/a 15.11.2016 15:02

Ahoj,
zpracovávám formulář vba a narazil jsem na problém, se kterým jsem se dříve nesetkal.

Popis kroků:
1. Otevřu zdrojový soubor.xlsx
2. Načtu z něj data do formuláře.
3. Zobrazím formulář
4. Zavřu zdrojový soubor.xlsx

Formulář je multipage (5 page) s pár tlačítky
Celé jsem to tvořil v excelu 2007. Makro volám z vlastního tlačítka ve vlastním ribbonovém pásu.

Teď ten problém. V excelu 2007 a 2010 mi to funguje naprosto bez problému, vše jak má. V excelu 2013 formulář jen problikne, ale nezobrazí se, resp. nezůstane viditelný (používám příkaz formular.show vbmodeless).
Stejně tak v 2007 dobře funguje příkaz, kdy stisk tlačítka zkopíruje text do schránky a maximalizuje prohlížeč chrome, zatímco 2013 funguje jen když je chrom na obrazovce (z lišty ho nevyvolá - používám příkaz Appactivate.

Nevíte někdo, kde by mohl být problém? Kdyby to nefungovalo vůbec, tak by mi to až tak překvapivé nepřišlo, ale že to nejde jen v konrétní verzi excelu, tomu nerozumím.
Na všech testovaných PC je win7. Excel 2013 jsem zkoušel na dvou PC, problém je na obou.

Jiné formuláře nám fungují ve všech verzích.

Díky za případné nápady

Zaslat odpověď >

#033458
avatar
Od boku: Zkuste se podívat na druhý monitor.citovat
#033467
avatar
mám jen jedencitovat
icon #033469
eLCHa
Zkusil jste přepnout na vbModal? Pouze pro test, zda to dělá také.

To tlačítko
následuje za .Show ještě nějaký kód?citovat
#033470
avatar
Zkoušel jsem jen odmazat vbmodaless.
Původně bylo volání formuláře v CSOB_Ribbon jako poslední položka (v tom formátu, jak je odstavec níže, tedy ještě s úpravou parametrů formuláře). Později jsem ho přidal přímo do tlačítka, viz níže

Public Sub CSOB_spust(control As IRibbonControl)
Application.ScreenUpdating = False
Call OtevriPristupy
Call CSOB_Ribbon
Call ZavriPristupy
Application.ScreenUpdating = True

Pristupy.MultiPage1.Value = 0
Pristupy.Show vbModeless
With Pristupy
.Height = 533
.Top = 40
.Left = Application.Width - Pristupy.Width - 10
End With
End Sub
citovat
icon #033471
eLCHa
nemám excel 2013 ani ten váš soubor, takže radit budu těžko.
jediné co poradím, je že řádky With Pristupy
.Height = 533
.Top = 40
.Left = Application.Width - Pristupy.Width - 10
End With
přesuňte do modulu formuláře do procedury Userform_Initialize- nastavení rozměrů a pozicování by mělo proběhnout ještě před zobrazením
With Pristupy
nahraďte v proceduře Initialize
With Me

taky se podívejte, co máte ve vlastnostech formuláře u vlastnosti StartupPosition - měl byste tam mít 0 - manual
Třeba to ve 2013 dělá neplechu

Ještě můžete zakomentovat řádek .Left = ... a .Top = ...
třeba 2013 jinak počítá pozici a formulář vám přesune jinam
vlastně to zakomentujte celé a zkuste co se stane bez toho dalšího nastavení ;)))

Ale jak říkám, jen spekuluji.citovat
#033472
avatar
Zkusil jsem, ale nepomohlo to.
Myslím, že problém je v tom příkazu Call ZavriPristupy (ten jen zavře zdrojový excel bez uložení).

Odkrokoval jsem celé makro a formulář se na konci normálně správně zobrazil. Pak jsem to zkusil i tlačítkem a taky to najednou fungovalo. Formulář se zobrazil.

Otevíral jsem ribbon ze souboru doplněk. Když to fungovalo, nahrál jsem tedy doplněk do složky addin a nastavil načtení doplňku po otevření souboru (takže muj ribbon je ve všech excelech) a formulář se dál zobrazoval, ale bez načtených dat (listboxy byly prázdné). Zkusil jsem přehodit příkaz show hned za CSOB_Ribbon, který data načítá a za ním zůstal příkaz na zavření zdrojového excelu. Tím jsem dosáhl toho, že formulář po otevření hned zmizí. Když jsem poradí vrátil tak, že příkaz .show je na konci, tak se formulář zobrazí, ale prázdný 7citovat

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje