Milý Chezy, pár pravidel tohoto fóra:
1. Jde o bezplatnou pomoc pro ty, kdo se potřebují zeptat
2. Každý, kdo se ptá, by měl svůj dotaz pečlivě promyslet
3. Každý, kdo odpovídá, zdarma věnuje svůj čas tazateli
4. Ne každý dotaz je rozumný, ne každá odpověď obsahuje jeho řešení
5. Tazatel by měl být vděčný za každou odpověď bez ohledu na to, jestli se mu líbí nebo ne.
6. Podrážděná reakce na kritiku zadání odrazuje od další chuti odpovídat takovému tazateli
Samolibé a povýšené odpovědi xlnc jsou pro něj typické. To ale neznamená, že neumí. Když se mu náhodou chce, ví hodně!
Může jít o špatný výklad toho, jak RemoveDuplicates pracuje. Podmínka, daná parametrem Columns, se porovnává jako celek. Duplicita tedy nastává, pokud platí současná shoda hodnot ve všech vyjmenovaných sloupcích. Současná shoda hodnot v šesti sloupcích je dost neobvyklý stav.
Problém se Selectem objektů na skrytém listu vede na všeobecně zavedenou pověru, že nelze pracovat se skrytým listem. Jediné, co nelze, je ten Select, se kterým s takovou oblibou pracuje makro kamera. Pravda je, že oslovovat přímo oblasti buněk nebo objekty na skrytém listu včetně jejich změn je bez problémů možné.
Druhou pověrou je, že Application.ScreenUpdating = True je nutné použít vždy před koncem procedury s vypnutým zobrazováním změn. Konec procedury to provede automaticky sám. Vynucené obnovení je naopak často zdrojem zbytečného flickeru.
Když ten textový soubor přiložíte, velmi pravděpodobně dostanete rychlou odpověď, v čem děláte při importu dat chybu.
Pokud platí, že maximální počet bodů je roven počtu účastníků soutěže, pak můžete počítat dosažené body ve sloupci E své tabulky podle vzorce
=18-(D11+(COUNTIF($D$11:$D$27;D11)-1)/2)
Použité číslo 18 je o jednu větší, než počet účastníků soutěže
Vzhledem k tomu, že Excel-VBA lze kdykoliv podpořit knihovnou MS DAO 3.6 pro práci s databází .mdb (což je datový základ Accessu), není nutné Access vlastnit, abychom mohli takovou databázi v Excelu vytvořit, plnit i využívat prostřednictvím dotazů. Ukládání dat do databáze je pro jejich sdílení samozřejmě o řád účinnější a bezpečnější, než ukládání dat ve sdíleném excelském sešitu.
Přečtěte si nápovědu k tématu sdílení. Ptát se na věci, popsané v nápovědě, nepokládám za věc, která by patřila do tohoto fóra.
Kód, který dostanete pomocí záznamníku maker, má skoro 40 řádků, z velké části zbytečných. Pro vnější ohraničení oblasti lze použít také metodu BorderAround, např.:
Sub VybarviOblast()
With Selection
.BorderAround Weight:=xlMedium
.Interior.Color = RGB(222, 222, 222)
End With
End Sub
Za makro lze pokládat pouze proceduru bez parametrů, umístěnou ve standardním modulu. Jen takové procedury jsou obsahem nabídky maker pro celý sešit. Pokud zůstane vaše procedura jako kód VBA v jednom listu, nebude z jiných listů viditelná ani volatelná. Přemístěte proceduru do standardního modulu a pak ji můžete volat ze všech listů vašeho sešitu.
Bohužel se mi potvrdilo, že zmíněný terminologický zmatek pochází už přímo z dílny Microsoftu. Přesto mi vaše odpovědi přinesly námět k řešení mého výkladového problému.
Pro kontingenční tabulku se u nás zavedla běžně používaná zkratka KT (i když tam, kde se jmenuje Pivot Table, té zkratce nikdo neporozumí). Název Excel Table pro ListObject se mi líbí, a z něj jsem si odvodil - podle vzoru KT - vlastní zkratku ET, kterou čtu jako Excel Table. Dobře se to píše, vyslovuje i používá pro odlišení pojmů. Dík za inspiraci a nabízím k využití!
Obecně se to řeší v události Worksheet_SelectionChange otestováním průniku oblasti Target s vybranou oblastí:
If Intersect(Target, Oblast) is Nothing Then Exit Sub
Nejsem v situaci, abych se honil za supernovinkami v Excelu. Pokud si nehraji sám pro sebe, vyvíjím aplikace pro druhé, a tam musím předpokládat heterogenní prostředí z hlediska používaných verzí Excelu. Je pro mne zcela běžné, že moji uživatelé pracují s E-2007. Občas stále ještě dostávám požadavky také od lidí se starým dobrým E-XP. Z toho pohledu pro mne budou funkce, jako je MAXIFS, ještě dlouho v oblasti praktického nepoužitelna. Na druhé straně jsem rád, když se o novinkách dozvím. Proto dík za info.
Funkci MAXIFS jsem ve svém E-2016 nenašel (ne že by se mi nehodila). Vyřešit požadavek lze i bez maticového vzorce s pomocným sloupcem, kam vyberu hodnoty, splňující podmínku, a z tohoto sloupce získám požadované maximum pomocí funkce MAX (případně MAXA).
Až teď jsem si všiml, že od začátku vlákna je k dispozici obsah příslušné událostní procedury. Jev, který popisujete, nejspíš souvisí s tím, že z jiného aktivního listu došlo ke změně na listu, k němuž patří ta procedura. V důsledku toho pak špatně zafunguje příkaz
ActiveSheet.Protect Password:="HESLO"
který zamkne list, z nějž byla změna realizována. Doporučuji příkaz upravit na
ThisWorkbook.Sheets("JménoListu").Protect Password:="HESLO"
Luštíme zbytečný hlavolam. Chybí nám dvě informace:
1. jak se volá to zamykání (nejspíš Worksheet_Change, ale mohlo by to být i jinak),
2. jak je to "zamykací" makro napsané.
To snad není firemní tajemství, takže by mělo jít zveřejnit.
S vysokou jistotou bude chyba mezi klávesnicí a židlí .
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.