Příspěvky uživatele


< návrat zpět

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

Formát, jak je napsaný, produkuje pro 0 až 9 hodin dvě mezery zcela právem: první z nich je mezera mezi oběma částmi časového údaje, druhá je produkována levým znakem "h" v použitém formátu. Pro vynechání té druhé mezery by formát musel vypadat "yyy-mm-dd h-mm-ss"

Elninoslov má pravdu v tom, že zdánlivě jednoduchá úloha má svá mnohá úskalí. Když jsem se pokusil rozvinout myšlenku, se kterou přišel Marjankaj o svoje rozšíření, vyšel mi z toho taky dost velký kód:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Target.Column <> 1 Then Exit Sub
On Error Resume Next
Range(Cells(1, 1), Cells(Target.Row - 1, 1)) _
.Find(What:=Target, LookAt:=xlWhole).Activate
If Err = 0 Then
Application.EnableEvents = False
If IsEmpty(Target.Offset(1, 0)) Then
Target.ClearContents
Else
Application.Undo
MsgBox "Změněná hodnota by byla duplicitní", _
vbExclamation, "ZMĚNA HODNOTY"
End If
Application.EnableEvents = True
End If
End Sub

Řešení, které poslal Marjankaj, se mi velmi líbí. Jde o kompaktní a úplné řešení problému v podobě, jak ho tazatel definoval. Pro vlastní potřebu bych do něj doplnil ještě likvidaci zadané hodnoty na místě Target (pokud byla nalezena jinde) a zabezpečení toho, aby se vyhledaná původní hodnota posunula do viditelné oblasti na monitoru. V této podobě by si to mělo najít bohaté uplatnění.

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...


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

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