Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  9 10 11 12 13 14 15 16 17   další » ... 36

Mně se ten zip hlásí jako prázdný. Z takového podkladu jsem nezmoudřel! 7

Indicie č.3:
Funkci, která zobrazí skryté heslo, lze zavolat v podobě
MsgBox Dekrypt(ActiveSheet.UsedRange)
Na listu nejsou umístěny žádné jiné objekty kromě buněk a skrytý nápis je skrytý právě v nich. Když si zjistíte, jak maličká je UsedRange na tom listu, jste už velmi blízko cíli!

Indicie č.4:
Skryté heslo spolehlivě zničíte pomocí následujícího kódu:
Range("A3").Copy
Range("A3:J7").PasteSpecial xlPasteFormats
Application.CutCopyMode = False
Doufám, že teď už víte, kam se vydat!

To zadání je velmi neurčité. Co se má dít, když za sebou budou ležet tři stejné hodnoty? Kam se mají zjištěné hodnoty kopírovat? Na stejné místo na novém listu, od začátku řádku...?
CHYBÍ PŘÍLOHA !!!

Když už jsem to vymyslel, tak to posílám pro srovnání 1

Mám malý dárek v vánocům. Kdysi před léty jsem to párkrát použil a pak se mi to úplně ztratilo z aktivní paměti. Včera se mi ta funkce vynořila z hlubin zapomnění v důsledku tohoto vlákna. Problém ale byl v tom, že jsem ji nebyl schopný vyvolat a v nápovědě mezi klávesovými zkratkami jsem ji nenašel. Až před malou chvílí se mi to povedlo.
O co jde? Vytvořte si sloupeček údajů a umístěte kurzor na první volnou buňku pod ním. A teď to kouzlo:
Alt + šipka dolů
Výsledek je podle mne dost užitečný k tomu, aby si ho člověk zapamatoval. Proč tato klávesová zkratka v nápovědě Excelu chybí, to snad vědí jen u Microsoftů...

Špatně jsem pochopil, co chcete porovnávat. Domníval jsem se, že tím porovnávacím místem bude nějaká tabulka platných hodnot. Jak to tak vypadá, chcete porovnávat nově vloženou hodnotu s těmi nad ní. AL to pochopil líp a nabídl účelné řešení zadané úlohy.

Dotaz by bylo dobré upřesnit (škoda, že není příloha):
1. Je seznam porovnávacích hodnot uspořádaný (setříděný)?
2. Co to znamená, když se hodnota nachází v jiné? Musejí začínat stejně, nebo jde o výskyt kdekoliv v porovnávané hodnotě?
Odpovědi na položené otázky mohou významně ovlivnit způsob i složitost řešení.

Indicie č.2: Žádná Enigma s využitím zobrazeného textu to není. Dekriptovací procedura má 25 řádků kódu, nemá žádná vlastní data s povahou konstant a pracuje výhradně s buňkami v UsedRange. Obsah zobrazeného textu se při dekriptování hesel vůbec nezkoumá.

psr napsal/a:

Vysledek = (Me.Textbox1.Tetx*1 + 0)*1 + (Me.Textbox2.Tetx*1 + 0)*1 + ...

Kvůli úspornosti zápisu lze využít dvou implicitních pravidel:
- v procedurách formuláře lze objekt Me před označením interního objektu vynechat (Me. se rozumí i bez něj)
- vlastnost Text je implicitní vlastností objektu TextBox, takže ji lze za označením objektu vynechat (.Text se rozumí i bez něj).
Citovaný zápis tedy bez újmy na funkčnosti lze psát v modulu formuláře také takto:
Vysledek = TextBox1 * 1 + TextBox2 * 1 + ...
Přičtení nuly má stejný účinek jako násobení jedničkou (v obou případech vznikne numerický sčítanec). Je zbytečné dělat jednu věc dvakrát. V případě sčítání jde jen o to, aby si VBA nevyložil operátor "+" jako "&" (což by pro TextBox1 + Textbox2 jinak provedl).

Myslím, že jsem to někde napsal, že se ten údaj nachází přímo na listu. Není proto nutné hledat v nějakých dalekých zákoutích sešitu.
Když už jsem sešit dal do placu, zjistil jsem, že mi na tom listu navíc z testů zůstalo ještě další heslo, a to KARKULKA. Takže můžete kromě Ježíška hledat ještě Karkulku 2

Psát výrazy, které po jednom oslovují desítky prvků na formuláři, nevypadá moc elegantně. Pomocí modulů třídy je možné zápisu dodat výrazně kompaktnější ráz.
Bez modulu třídy si život často zjednodušuji využíváním kolekce Controls se současným zavedením interní logiky do použitých jmen prvků na formuláři.
Např. zápis typu
MujFormular.Controls("Tlacitko" & i)
pak umožňuje pracovat se skupinou tlačítek (nebo s libovolnou jinou skupinou prvků) prakticky jako se členy pole prvků s indexem i. Pro konkrétní výběry prvků při tomto postupu lze s velkou výhodou využívat konstrukci Select Case i - End Select

to marjankaj:
tak to jsem nevěděl a naštěstí to nevědí ani ti, pro které jsem touto technikou jejich sešity vybavil. Oni to pokládají za neprůstřelné (i když sám dobře vím, že to jde obejít i jinak).
Prostě stále platí stará pravda, že Excel není bezpečné datové prostředí. Přesto se pokoušíme v uživatelích alespoň vyvolat pocit bezpečí. Ostatně, lidé si své byty také opatřují složitými dveřními zámky a dveřmi, které nejdou vyháčkovat, a přitom zpravidla stačí malá dlažební kostka do zvoleného okna...

Sám nemám rád, když do rozjeté diskuse najednou vstoupí někdo, který se diskuse nezúčastnil od jejího začátku. Proto se omlouvám.
Diskuse kolem vzorce ve sloupci AA mne zaujala tím, že hledá co nejlepší formu pro maticový megavzorec. Ty opravdu nemám rád a když se jim lze vyhnout, činím tak. Proto velmi fandím nápadu s KT od Luba.
Pro ty, kteří nemají rádi ani maticové vzorce, ani KT, nabízím prosté řešení, postavené na tom, že tabulka hovorů je seřazená časem a umožňuje tím daleko jednodušší získání seznamu unikátních datumů, než je maticový vzorec. Stačí k tomu nematicové funkce POZVYHLEDAT a NEPŘÍMÝ.ODKAZ.
V příloze je výřez z listu, v němž jsem využil nepoužité sloupce W:Y pro své řešení. Sloupce W a X sice jsou pomocné, ale velmi dobře doplňují získanou informaci ve sloupci Y, která se datově shoduje se sloupcem AA. Zde jsou použité vzorce:
buňka W3: =IFERROR(X2+1;"")
buňka X3: =IFERROR(POZVYHLEDAT(NEPŘÍMÝ.ODKAZ("A"&W3);A:A;1);"")
buňka Y3: =IFERROR(NEPŘÍMÝ.ODKAZ("A"&X3);"")
Uvedené vzorce nejsou maticové a jsou roztažené do řádků 2:29. Výjimku tvoří buňka W2, kde je vzorec nahrazen konstantou 2 pro první řádek tabulky datumů

Snaha ochránit sešit pomocí maker před zakázanými manipulacemi je přirozená. Povolení maker při otvírání sešitu si ale nelze vynutit. Zdá se, že to prakticky ochranu sešitu pomocí maker znehodnocuje. Přesto existuje technika, která umí tento gordický uzel rozetnout. Přestože i na ni lze vyzrát, je ta technika relativně spolehlivá.
Stejně jako existuje událost Workbook_Open, existuje i událost Workbook_BeforeClose. S její pomocí můžeme dosáhnout slušného zabezpečení sešitu nastavením vlastnosti VeryHidden všem datovým listům. V sešitě ale musí zůstat alespoň jeden list otevřený. Proto do sešitu přidáme jeden list s oznámením, že bez spuštěných maker sešit nebude pracovat. Při zavírání sešitu zobrazíme pouze tento list, zatímco zbývající listy sešitu skryjeme jako VeryHidden. Listy, skryté VeryHidden, lze zobrazit právě jenom pomocí VBA. A to je podstata použité finty.
Událost Workbook_Open napíšeme tak, že datové listy naopak uvede do stavu Visible (a ten pomocný list schová). Aby Workbook_Open proběhla, musíme makra povolit. Když se naopak pokusíme sešit otevřít bez povolených maker, datové listy zůstanou VeryHidden a my uvidíme jen tu oznamovací ceduli. V tomto stavu prakticky zůstane obsah sešitu nedostupný, a tedy ochráněný. Bez povolených maker proto spuštění sešitu ztrácí jakýkoliv smysl.

Všem slušným lidem na fóru přeji hezké a klidné svátky. Pro milovníky tajemných nápisů posílám sešit s tajenkou. Tentokrát nejde o obsah tajenky, ale o způsob a místo jejího utajení. V detektivkové terminologii tedy nejde o WhoIsIt ani o WhatIsIt, ale o WhereIsIt a také o HowIsIt.
Přeji úspěšné pátrání! Nepište prosím na fórum princip, pokud ho objevíte. Dopřejte i ostatním, aby ho mohli objevovat sami!


Strana:  1 ... « předchozí  9 10 11 12 13 14 15 16 17   další » ... 36

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