Příspěvky uživatele


< návrat zpět

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

Š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!

Např:
with cells(2,2)
select case .interior.color
case vbblack: .font.color = vbwhite
case else: .font.color = vbblack
end select
end with
nebo místo celého toho řádku s ElseIf napsat jenom Else

Je to psané hodně neohrabaně, ale zas tak daleko od cíle nejste. Jenom v popisu problému pracujete s buňkou B1 a v kódu s I1. To nejspíš pokládáte za drobný detail 1 .
Jestli se vám ještě dlouho nikdo neozve, tak ten váš kód přepíšu do spisovnější podoby.
Když jsem to začal upravovat, scvrklo se mi to na tuto událostní proceduru (nutno umístit do modulu pro list):

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Check As Range
Set Check = Range("I1")
If Intersect(Check, Target) Is Nothing Then Exit Sub
Select Case Check.Value
Case 1, 2, 10
Sheets(2).Rows("45:50").Hidden = False
Case 3 To 9
Sheets(2).Rows("45:50").Hidden = True
End Select
End Sub
Označení Sheets(2) je volání listu s těmi skrývanými řádky

Nekonečný příběh: nepřesný popis problému lze zpravidla upřesnit ukázkou sešitu. Lidé, kteří se sem chodí ptát, se snad občas podívají jak se ptají ti druzí. Zjistili by, že dotaz s přílohou má nepoměrně vyšší šanci než dotaz bez ní.

Tento typ spolupráce se blíží mé představě, jak by to mělo tady na fóru vypadat: smyslem podle mne není dodávat hotová (a často neprůhledná) řešení. Smyslem je ukázat cestu tazateli, který pak po té cestě dokáže dojít tam, kam dojít chce a potřebuje. Mám velmi dobrý pocit, že jste se dostal na správnou oběžnou dráhu...

Nevím, jestli jsem správně pochopil. Jeví se mi to tak, že máte v úmyslu vybrat víc buněk najednou, a pak tento výběr najednou shodně naplnit pomocí Ctrl+Enter? Z první to vypadá dost nadějně; mělo by stačit nastavit trochu jinak filtr v událostní proceduře. S tímto způsobem zadávání hodnot nemám zkušenost, musím chování událostní procedury otestovat.
Mírně jsem událostní proceduru upravil, aby to bralo i více buněk včetně nesouvislých oblastí. Zdá se, že to běhá. Prosím o otestování. Úprava je v příloze.


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

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