Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  192 193 194 195 196 197 198 199 200   další » ... 302

Prečo to testujete po jednej bunke, keď nepotrebujete pozíciu danej bunky ? Použite
WorksheetFunction.CountIf
alebo
IsError(Application.Match)
alebo s pomocou On Error
WorksheetFunction.Match
Obdobne sa s tým pohrajte, ak chcete zistiť či je CurrentUser v T iba vtedy ak nieje v G.

Tipujem na:
1. Chýbajúca referencia na "Microsoft Outlook xx.x Object Library"
2. Rozdielnu deklaráciu triedy (ktorú treba ošetriť pomocou
podľa Application.Version) napr.:
Dim objOL as Object
Set objOL = CreateObject("Outlook.Application")

vs
Dim objOL as Outlook.Application
Set objOL = New Outlook.Application

Za prvé neverím tomu, že sa to nedá rozsekať a/alebo parametrizovať procedúry, či rozhodiť do modulov. To je blbosť.
Za druhé nikto Vám to neurobí, bez toho, aby ste zverejnil ten kód, čo je logické.
Za tretie, len všeobecne, napr. si najskôr urobte iba base procedúru na kontrolu práv, napr Select Case, odtiaľ volajte s parametrom inú procedúru na skrytie/odkrytie. Ďalej odstráňte všetky Sheets("názovlistu").Select a rovno použite Sheets("názovlistu").potrebná_operácia.
To logovanie alebo čo to vlastne robíte, je asi nejaký zápis užívateľa a jeho akcie. Ak je tak, tak to je jasný kandidát na samostatnú procedúru
Sub LogProc(User as String, Akcia as Long, Cas as Double)
... zapíšte...
End Sub
...
Inak povedané, opakujúce sa časti kódu majú byť samostatná procedúra.
Opakujúce sa časti kódu so zmeneným parametrom, majú byť samostatná parametrizovaná procedúra.
...

Čo viac napísať, keď sme "slepí"...

Takže :
- 20 listov * 5 tabuliek na liste * 2000 riadkov v každej tabuľke * 5 stĺpcov v každej tabuľke = 200 000 riadkov a 5 stĺpcov ?
- Sú to Tabuľky (vložený objekt Tabuľka), alebo tabuľky obyčajné iba orámované ?
- Tie tabuľky sú teda vždy rovnako veľké, rovnako umiestnené, rovnako koncipované, a obsahujú iba meniace sa dáta (rovnakého typu) ?
- Ako tie tabuľky ťahajú dáta z iných zošitov, cez vzorec =[zošit]List!bunka ?
- Zošity sú v jednom adresári ?
- Mení sa názov tých zošitov, alebo názov listov, z ktorých sa čítajú údaje ?

- Prílohu vložte takú, na ktorej bude vidieť všetko potrebné, vymyslené mená a čísla, reálne tabuľky, reálne prepojenia, + nejaký ten zdrojový súbor.

Strašne málo konkrétnych informácií.

Veď to máte parádnu verziu. Ja som robil podstatne zložitejšiu, maticovú. Toto máte lepšie.
Čo si tam neviete nastaviť rozsah dát ? Je to v Definovaných názvoch. Ak aj tie oblasti chcete mať dynamické, pozrite, ako riešim dynamickú oblasť rngPolozky ja.

A napokon - sme zase tam, kde sme nechceli byť. Je dobré priložiť vždy čo najkompletnejšiu predstavu čo mám, a manuálne vytvorený výsledok čo chcem mať. A nie takto, že sa urobí komplik. vzorec, a potom poviete krok dva, že tam chcete ešte ďalšie 2 stĺpce, ale nepoviete ako, čo v nich má byť, aká je závislosť s týmto stĺpcom čo sme robili ... atď.

No a teraz keď si chcem pozrieť tú prílohu, už jej niet ...

Návrh vzorcom aj makrom. Makro dáva aj čísla, vzorcom doplniť aj čísla by bolo príliš komplikované.

Trošku si skráťte tú prácu s oblasťami:
Sheets("Vyjadreni").Range("B37:T51,L13:S16,M18:O18,Q18:S18,P20:S21,I27:I29,N27:S29").ClearContents

Používate asi CZ Excel, tak zmente vzorec na český:
=KDYŽ(COUNTIF(A1;C:C)=0;NEDEF();"ok")
Odstránenie:
Po tom čo urobíte, ako bolo napísané, ostanú označené chybné bunky. Pravý klik, Odstrániť, Celý riadok.

Riešenie ?
1. Opakujúce použitie Cells(1,2) nahradte tak, že iba raz si do premennej HDN = Cells(1,2).Value uložte hodnotu, a pracujte s premennou. Rovnako ak používate súvislú oblasť buniek Cells(11,2-5) načítajte si ju do premennej aHDN = Cells(11,2).Resize(4).Value a pracujte s poľom aHDN(riadok, stĺpec). Prestupovanie z listu do VBA je pomalé, a nevieme koľkokrát tieto testy prevádzate, môže to spomaľovať.
2. A s tým súvisí ďalšia vec - pridajte prílohu (!), aby bolo vidieť, čo robia volané procedúry. Zaregistrujte sa a môžete prikladať prílohy.
3. Možno bude pre Vás riešením vhodné použitie Application.EnableEvents (aj vypnutie aj zapnutie)...

Poznámky:
Používate tam Application.ScreenUpdating = False. Vraciate to niekde aj naspäť ?
Určite majú bunky v Cells(11,2-5) hodnotu "1" a nie 1 ?
Musí to byť vo Worksheet_Calculate ?

A nepríde Vám zbytočné 2x klikať ? Raz na ListBox "Mail CS" a potom na tlačítko tiež "Mail CS". Akciu vykonajte buď hneď pri kliku v ListBoxe, alebo ešte lepšie ListBox celý preč, a len klikajte na požadované tlačítko.

Inak nastavte vlastnosť tlačítok Enabled predvolene na False, a potom
Private Sub ListBox1_Click()
Controls(Array("btnMailCS", "btnMailIC", "btnMailCSII", "btnMailWH")(ListBox1.ListIndex)).Enabled = True
End Sub

Vám zapne dané tlačítko.

EDIT: Ešte ma napadlo, že ak to nemá byť jednotázové, tak treba vždy ostatným tlačítkam nastaviť Enabled = False, lebo takto si ich postupne pozapínnate. Som už len na mobile, ale skuste všetkym 4 nastaviť False pred riadkom čo som Vám poslal.

Mne príde ako nezmysel zadávať niekam meno Lenka, ak je Lenka prítomná vždy, a navyše kombinácia rovnakých mien napr. Lenka + Tonda / Tonda + Lenka má rovnaké hodnoty, a iné kombinácie mien sa dať nedajú (napr. Tonda + Karel). Z toho mi vyplýva, že udávať meno Lenka je zbytočné, a z toho ešte ďalej mi plynie zbytočnosť celého jedného stĺpca s menom.
Rozmýšľam správne, či nie ?

EDIT: Aha, jedine, že by boli príkladné mená uvedené zle, a v skutočnosti by sa nejednalo vždy o Lenku, ale aj o iné mená. V tom prípade by ale kombinácií bolo podstatne viac.

A ešte treba zahrnúť podmienku pre počítanie s cenou výrobku podľa bunky G21, čo nieje problém, len ďalšia vec ktorej nerozumiem. Platí :
(hodiny + výrobok) * Početalebohodiny * Počet + výrobok?

eLCHa napsal/a:

...
Pořád platí, co píše xlnc
...

Myslíte aj ten môj vzorec ? Mne sa nedarí navodiť, aby to rátalo zle. Rovnaké výsledky ako Váš vzorec.
Inak dík za upozornenie na ISEVEN, priznám že som o nej nevedel...

Tak potom by sa to maticovo dalo snáď upraviť takto:
=SUM((MOD(COLUMN(F7:O22);2)=0)*(F7:O22=119)*OFFSET(F7:O22;0;1))
=SUMA((MOD(SLOUPEC(F7:O22);2)=0)*(F7:O22=119)*POSUN(F7:O22;0;1))

Chápeme, ale ja osobne nepoznám riešenie, a nič som ani nevygooglil. Snáď niekto iný ...


Strana:  1 ... « předchozí  192 193 194 195 196 197 198 199 200   další » ... 302

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