www.iDNES.cz Zprávy | Sport | Kultura | Ekonomika | Finance | Bydlení | Cestování | Auto | Hobby | Mobil | Technet | Ona | Xman | Revue | Blog | Video | Hry | více
reklama

nepřihlášen










reklama

ikonka pro Vás

 
   
     
Od:
Vladimír
Datum:
5.6.2010 17:36
Předmět:
Poloha MsgBoxu a formulářů na datovém listu


Poloha MsgBoxu a formulářů na datovém listu:

Pro určení vzájemné polohy buněk a objektů Shapes (obrázky, automatické tvary, grafy atd.) spolehlivě slouží vlastnosti Top a Left, které mají pro buňky i Shapes stejnou velikost i společný počátek v levém horním rohu datového listu. Pro jiné objekty, mezi něž se řadí UserForm a MsgBox, však platí jiná souřadnicová soustava s počátkem v levém horním rohu okna aplikace Excel (zpravidla v levém horním rohu celé obrazovky). Pro oblast datového listu navíc lze uplatnit práci s lupou, která mění měřítko souřadnicového systému pro datový list a která se oblasti záhlaví aplikace netýká. Jde tedy opravdu o dva odlišné souřadnicové systémy.

Jako evergreen se mi opakovaně vrací potřeba umístit buď MsgBox nebo UserForm do místa, vztaženého k poloze konkrétní buňky. Nikde jsem však nenašel způsob, jak zjistit, kde leží (v souřadném systému okna aplikace) levý horní roh datového listu. V okamžiku, kdy bych tento údaj znal, bych neměl problém umístit Userform přesně k té buňce, k níž má formulář vztah. Již v klasickém Excelu mne ten problém trápil; změna počtu nástrojových lišt, zobrazení / skrytí řádku vzorců nebo zobrazení / skrytí záhlaví buněk pokazí jakoukoliv snahu po vzájemném sladění polohy buněk s polohou MsgBoxu nebo UserFormu. V E2007 stejně mocně do hry vstoupí zobrazení nebo skrytí ribbonu.

Otázka tedy zní: existuje způsob, jak zjistit polohu levého horního rohu datového listu (tj. bodu (0;0) pro levý horní roh buňky A1) v souřadném systému, který používá MsgBox a UserForm?

Nechce se mi věřit, že by za třináct let existence VBA na danou otázku neexistovala odpověď. Za prozrazení tohoto tajemství mohu obratem ruky dodat k obecnému použití procedury, které umožní dynamicky definovat polohu objektů MsgBox a UserForm vůči libovolné buňce, případně vůči jakémukoliv objektu Shape na datovém listu.

 


   
     

 

Contact: ales.vondracek@volny.cz

(c) 2002-2010, MAFRA a.s.
Všechna práva vyhrazena. Společnost MAFRA a.s. nenese jakoukoliv zodpovědnost
za obsah rozesílaných příspěvků, nesou ji výlučně jejich autoři. Autoři jsou povinni respektovat pravidla