| Autor |
Komponenta kalendař do buňky |
jusepe
Člen

Příspěvků: 64
Založen: 29.12.07 |
|
Jak k vybranym bunkam (např. sloupec F a G) každého řádku pripojit komponentu kalendař? Pomoci vyberu v komponente kalendář se do bunky vepise hodnota typu date. Viz. obr. který neni z excelu.
Děkuji za jakýkoliv nákop..
jusepe přiložil(a) následující obrázek:

Upravil jusepe, 20.02.2009 19:57 |
|
| Autor |
RE: Komponenta kalendař do buňky |
ad excel
Hlavní administrátor

Příspěvků: 187
Založen: 27.11.06 |
|
Tak jednou z možností je použít komponentu Kalendář z Office, sledovat události Selection_Change a zobrazovat prvek v levém horním rohu buňky, která leží vpravo od místa vložení (vlastnosti Top, Left). Já bych ale na tomhle místě uvedl jiné řešení:
http://blogs.msdn.com/excel/archive/2007/08/01/sam-radakovitz-on-date-pickers.aspx
Měsíce budou česky, ostatní popisky anglicky - viz příloha.
Petr Pecháček
ad excel přiložil(a) následující obrázek:
 |
|
| Autor |
RE: Komponenta kalendař do buňky |
jusepe
Člen

Příspěvků: 64
Založen: 29.12.07 |
|
|
Super, děkuji za tip. |
|
| Autor |
RE: Komponenta kalendař do buňky |
jusepe
Člen

Příspěvků: 64
Založen: 29.12.07 |
|
Prubnul jsem zminovanou komponentu (doplnek) a rozhodne je vymakaný, můj obdiv jeho autorovi.
Pro me ucely je nepouzitelny. Používam jěště svůj doplněk s ovládácím algoritmem pro sešit a něco se mi navzájem tluče. Při změně hodnoty v buňce typu Date se zacyklí samradDatePicker.xla. V příkladu na odkazu vše funguje.
Přikloním se k prvně zminované variantě.
Pomohl by mi nějaký příklad. "zobrazovat prvek v levém horním rohu buňky" mi je zatim cizí. Ostatní bych snad zvládl.
Děkuji
P |
|
| Autor |
RE: Komponenta kalendař do buňky |
jusepe
Člen

Příspěvků: 64
Založen: 29.12.07 |
|
Zkoušim umisťovat formulář s komponentou kalendář podle active buňky. Pouze poloha bunky nestaci, je treba korigovat podle okna excelu a samotného aktivního okna. Nasel jsem par navodu jak pomoci "handle okna - hWnd" najit info o oknu, bohužel ve VBA nefunguje.
Stačil by mi nějaký utržek kodu, zrejme s API, kde se toto řeší ve VBA.
Může někdo pomoci...
dik
Upravil jusepe, 24.02.2009 21:23 |
|
| Autor |
RE: Komponenta kalendař do buňky |
ad excel
Hlavní administrátor

Příspěvků: 187
Založen: 27.11.06 |
|
Tak trochu jako reakce na toto téma vznikl článek a doplněk - viz http://excelplus.net/news.php?readmore=66
Petr Pecháček |
|
| Autor |
RE: Komponenta kalendař do buňky |
Bath
Člen
Příspěvků: 84
Založen: 04.05.09 |
|
Ohledně zobrazování userformu u aktivní buňky,
jak řešíte případ, kdy je ještě okno rozděleno
na příčky?
V případě rozdělení by postačila korekce o sílu
příček... Lze šířku nějak zjistit?
GetSystemMetrics? Jaká konstanta?
Při rozdělení lze vidět v každém rozděleném pane
aktivní buňku a vezme se v úvahu buňka v prvním
rozděleném pane... Jak dospět ke skutečně aktivní
buňce v aktivním pane a její poloze?
Jsou-li příčky zmrazeny pomocí FreezePanes,tak je
výpočet polohy chybný ani neodpovídá ActivePane
pro vybranou buňku... Máte s tím někdo zkušenost?
Přes ActiveWindow.Panes(i).VisibleRange vrací Left
i Top pro každé Pane 0 ...
Jak tedy získat pozici pro jednotlivé Pane?
Lze předpokládat, že počet Panes bude pro nedělené
okno vždy pouze 1 a pro rozdělené nebo 2 a 4 ?
Kalendář je velmi pěkný, ale pokud první týden roku není
zrovna jedna, tak se týdny načítají 52 či 53 a dále 54 ...
Zobrazení státních svátků, resp. barevné rozlišení labelů
podle pracovní den ,sobota, neděle či svátek by bylo milé
vylepšení... Je fakt nádherný a poslouží pro další inspiraci.
S případnou funčnostností klávesnice bude zřejmě nutné
zachytávat klávesy u všech prvků?
Zajímalo by mě i zobrazení userformu jako popup menu,
nebyl by modální a při ztrátě fokusu by se zavřel. Bohužel
eventy aplikace jsou myslím pro tento účel nepoužitelné
a pokusy se subclasing a zachytáváním wm_appactivate
jsou nezdárné... Zřejmě to prostě nejde?
Jak lze vyřešit ukládání nastavení kalendáře, například bude
česká a slovenská verze apod. Kam uložit nastavení?
Nejlépe přímo k sešitu doplňku, nelze využít customdocument
properties, jsou u doplňku vlastní vlastnosti dostupné?
Děkuji za případné postřehy a snad to má již Pepík
(jusepe) ošéfovaný, budu ráda za každou pomoc,díky. |
|
| Autor |
RE: Komponenta kalendař do buňky |
ad excel
Hlavní administrátor

Příspěvků: 187
Založen: 27.11.06 |
|
Stručně k mému doplňku:
1) Pozicování formuláře k buňce je docela alchymie (měrné jednotky, nemaximalizované okno, více oken, příčky, ...), viděl jsem už hodně sofistikované řešení, ale nebylo stoprocentní, když jsem ho zkoušel pod Windows Vista). Je to trochu boj s větrnými mlýny...
2) Státní svátky by bylo třeba ukládat (nejedná se o nic statického, už se opět projednávají změny na další roky). Pravděpodobně by jako úložiště posloužily skryté listy doplňku. Uvidím... Rozlišování na řekněme českou a slovenskou verzi .. mno :-)
3) Další barvení (státní svátky, víkendy) zvážím. Je potřeba stanovit jen priority barvení.
4) Zpracování coby "příručního formuláře" pro nahrazení klasických prvků (Calendar, DateTime Picker) právě testuji v jedné aplikaci na míru. Techniku práce zveřejním. Přikláním se ale k vytvoření komponenty ve VB6, kterou bude možné aplikovat pod VBA.
5) Číslování týdnu znovu otestuji.
Petr Pecháček |
|
| Autor |
RE: Komponenta kalendař do buňky |
Bath
Člen
Příspěvků: 84
Založen: 04.05.09 |
|
1) Souhlasím, boj s větrnými mlýny...
Taky zobrazené či skryté záhlavi řádků a sloupců...
Vzdávám to...
Zobrazit userform na aktuální pozici myši v buňce?
To ale není tak pěkné...
2) Svátky krom velikonoc dány dle kalendářního data,
česká a slovenská verze byl jen příklad, ale uvažuji použít
vlastní vlastnosti pro ukládání nastavení, zobrazení apod.
Případně i pro uložení svátků s možností je upravit či přidat
ve vlastnostech souboru na kartě vlastní
3) Priority stanoveny, sobota zelená, neděle a svátek červená
dle plánovacího kalendáře...
Zobrazuji celé týdny doplněné o dny z předchozího a dalšího
měsíce, používám světlejší a tmavší odstín zelené a červené
a šedou a černou pro neaktivní nebo aktivní měšíc
4) Těším se na nové tipy, podobnou vb6 "příruční" záležitost
používám, upozorňuje na svátky a narozeniny kolegů :-)
5) Pro číslování týdnů lze využít Format plus nastavená konstanta
pro první čtyři dny v roce
Děkuji za reakci a mnoho zdaru všem
(v boji s větrnými mlýny) :-)
|
|
| Autor |
RE: Komponenta kalendař do buňky |
Bath
Člen
Příspěvků: 84
Založen: 04.05.09 |
|
S odstupem času chci přidat zajímavé odkazy
týkající se zobrazení UserFormu u buňky.
Form Positioner :
http://www.cpearson.com/excel/FormPosition.htm
Support for split windows and frozen panes will be added in a later release...
Positioning a UserForm Over a Cell :
http://www.dailydoseofexcel.com/archives/2007/08/30/positioning-a-userform-over-a-cell/
Stáhněte a zkuste: RangePos Beta3.zip
Zdá se, že to funguje i pro rozdělená okna, jak bylo zmíněno dříve.
...
Snažím se pro podobnou potřebu zobrazit u aktivní buňky
Shape či OleObject, ale zjištuji, že jen nastavit Placement
na xlMove nestačí...
Při změně šířky sloupce se objekt přesune, ale při změně
šířky řádku je jeho pozice beze změny, nevíte někdo proč ?
Nějaká vlastnost, která určí, jak se má objekt přichytit ?
Asi to nebude o moc jednodušší, jak se zprvu zdálo...
Vypadá to na událost při změně šířky řádku aktivní buňky. :-) |
|
| Autor |
RE: Komponenta kalendař do buňky |
jusepe
Člen

Příspěvků: 64
Založen: 29.12.07 |
|
"Positioning a UserForm Over a Cell :"
Velice povedene.
Pepík to moc nevymakal, akorat mam form kalendaře jako nemodalni. S temi tydny to blbne jen prvni týden v roce, jinak to beha suprove, bohate mi postacuje.
Jinak se mi osvedcil nasledujici trapny ale funkční zpusob přes form, neco na zpusob toho druheho odkazu:
1. udalosti pravý klik ulozim polohu kurzoru (api GetCursorPos)
2. v kontext. menu spustim proceduru
3. form umistim podle ulozene polohy (nutny prepocet px na pt)
a je to. |
|
| Autor |
RE: Komponenta kalendař do buňky |
Bath
Člen
Příspěvků: 84
Založen: 04.05.09 |
|
Zdar Pepiku, děkuji Ti za odezvu, je to fakt pěkné,
ale taky rezignace na veškeré počítání, používám
stejně trapný způsob s umístěním formuláře na x, y
uložených před pravým kliknutím v listu. Super, stačí.
Stejným způsobem lze zobrazit form i po doubleclick
je-li v buňce datum, docela užitečné.
Lze to maličko vylepšit pohlídáním, aby form nevylezl
mimo plochu (SPI_GETWORKAREA), jinak to má jednu
vadu na kráse pokud se menu zobrazí z klávesnice, pak
se objeví kdekoli na uložených souřadnicích posledního
pravého kliknutí... Nemilé, co?
Zatím to neřešim, třeba budeš vědět, tak to poopravim.
Možná někdo bude vědět, jak na zachytávání klávesy
zobrazení menu, případně také F2 pro zobrazení formu?
Bez zobrazení po F2 mi vyhovuje, lze upravovat klasicky
údaj v buňce např. pokud obsahuje ještě časový údaj,
ale odchytit zobrazení kontextového menu u buňky
z klávesnice by bylo zajímavé...
Poklona autorovi, Tobě a pozdrav všem! :) Jako v tv... |
|
| Autor |
RE: Komponenta kalendař do buňky |
Bath
Člen
Příspěvků: 84
Založen: 04.05.09 |
|
Přikládám další příspěvek, snad dobrý tip...
Zobrazení pro případ, kdy je v buňce datum
nebo pro prázdnou buňku s formátem
datumu (pro varianty dm + my + dmy) :
| Kód VBA | If IsDate(ActiveCell) Or DateFormatedCell Then Module1.SpustiKalendar EndIf
|
Pokus zjištění formátu prázdné buňky:
| Kód VBA | Function DateFormatedCell() As Boolean Dim bdf As Boolean, sdf As String On Error GoTo Function_Exit bdf = (CBool(InStr(ActiveCell.NumberFormat, "d")) _ And CBool(InStr(ActiveCell.NumberFormat, "m"))) Or _ (CBool(InStr(ActiveCell.NumberFormat, "m")) _ And CBool(InStr(ActiveCell.NumberFormat, "y"))) Or _ ((CBool(InStr(ActiveCell.NumberFormat, "d")) _ And CBool(InStr(ActiveCell.NumberFormat, "m")) _ And CBool(InStr(ActiveCell.NumberFormat, "y")))) If Not bdf Then Exit Function sdf = Format(Date, ActiveCell.NumberFormat) DateFormatedCell = IsDate(sdf) Exit Function Function_Exit: On Error GoTo 0 End Function
|
Lepší řešení? Nějaký nápad?
Jak zjistit je-li formát prázdné buňky datum?
...
Další kalendářní výzkum :) včetně kódu
neznámého autora naleznete zde:
http://www.vbnet.cz/forum-tema--3801-vba_spusten_237_po_kliknut_237_.aspx
Také tam najdete, jak si vytvořiti třídu
pro události excel aplikace...
|
|
| Autor |
RE: Komponenta kalendař do buňky |
Premek
Člen

Příspěvků: 255
Bydliště: Ostrava
Založen: 11.04.07 |
|
Kouknete se tady, mozna ze to jeden z nas vyresil to pozicovani
http://pandora.idnes.cz/part/2010/6/5625 - reseni
http://pandora.idnes.cz/part/2010/6/2615 - popis problemu
Nikdy neni tak zle, aby nemohlo byt jeste hur :-)
Office 2007 EN & Office 2003 CZ & Office 2000 EN & Office 2010 EN
Upravil Premek, 14.06.2010 11:49 |
|