1
Moje chyba - nesroloval jsem dolů a přehlédl jsem
V tom případě platí CountIf
Proč CountIf a ne Find?
Nemám podloženo co je rychlejší, ale zastávám názor, že po opuštění kódu by měl být Excel ve stejném stavu jako při spuštění
Proto Nikdy nepoužiju např
ScreenUpdating=False
ScreenUpdating=True
ale
bScreen=ScreenUpdating
ScreenUpdating=False
...
ScreenUpdating=bScreen
Toto oceníte při velkých projektech, když už pak nevíte, která procedura vlastně tu vlastnost přepla nebo vám ji jiná zapne, když má být ještě vypnutá. Takže jsem se to naučil dělat vždy a problém mi odpadl.
Mno a Find při použití
r = Rows(i).Find(what:="SKRYŤ!!!", lookat:=xlWhole, LookIn:=xlValues).Row
nechá zaškrtnutou volbu
Pouze celé buňky v dialogu Ctrl+H a při použití této zkratky pak nemusíte ani vědět, že tomu tak je a divíte se - jááák tóó!! (já se takhle divím ;)) )
CountIf nic nemění a jako kontrola stačí
If CountIf>0 then
2
Souhlasím - UsedRange může být zrádné, nicméně to i
Cells(Rows.Count, 2).End(xlUp)
protože ve 2. sloupci nemusí být hodnota a ve 3. ano
Případ od případu
3
Pokud použijete For I = místo mého For Each rRow
tak musíte použít např Cells(I) a když to řeknu laicky,(nejsem programátor, ale amatér a samouk), kompilátor musí vždy hledat, co za buňku to je a zjistit si její vlastnosti (dá se ale obejít pomocí With)
kdežto rRow už je načtená
S pamětí máte pravdu, rychlost posoudit neumím, ani jedno už dnes asi řešit nemusíme ;) - takže beru to, co je mi přijde praktičtější
Souhlasím, že kód nemá být co nejkratší, ale co nejpřehlednější a nejjednodušší - ostatně můj je delší než ten váš, ale použití GoTo ten váš hodně znepřehledňuje.
Pokud se někdo zrovna učí - nejhorší jsou špatné návyky. Proto by se měl hned naučit použití With, ForEach, Select apod.
A teď pár odpovědí
1 - viz výše
2 - naprosto nemá, prostě mi to přijde méně přehledné, než If - End IF
3 - Naopak - OnError je báječná věc - a proto láká ke zneužití. Legrace je, že se jí dá někdy krásně vyhnout, jenže se musí přemýšlet
Včera jsem např řešil název s neplatným odkazem (=#REF!)
Tady to přímo láká, že?
A přitom stačí InStr a místo tří řádků máte jeden.
Bože - tolik písmen ;)))
Tolik ke komentáři komentáře ;))
citovat