Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  176 177 178 179 180 181 182 183 184   další » ... 286

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

No tak takéto niečo pôjde asi iba nachystaným vzorcom na dostatočný počet riadkov, alebo makrom.

EDIT: Teraz si uvedomujem, že vlastne neviem, ako sa správne počíta na ktorý deň padne posun časov. Myslel som, že je to posledný celý víkend v marci a októbri, ale zdá sa, že to tak nieje. Možno to bude 4 víkend v mesiaci (čo nieje to isté). Keď bude chuť, si to ešte možno pohľadám, zatiaľ si to teda v CHOOSE/ZVOLIT v F3:F1002 zmente na ten svoj výpočet.
1 param - normálne pripočítanie hodiny
2 param - marec
3 param - október
4 param - nič

Niekoľko príkladov. Ten koniec mat. vzorca hovorí, ktorú položky v poradí od najmenšej (SMALL) ma vypísať. V riadku D1 hodí ROWS($A$1:A1) = 1, v riadku D2 hodí ROWS($A$1:A2) = 2, v riadku D3 hodí ROWS($A$1:A3) = 3... stačilo by ale ROW(A1), a postupným kopírovaním do ďalších riadkov sa výsledok oboch verzii mení na poradové číslo 1,2,3,... a to je účel.
Ak nebudete vedieť, čo som ktorou verziou myslel, alebo ako som ju dosiahol, píšte.


Strana:  1 ... « předchozí  176 177 178 179 180 181 182 183 184   další » ... 286

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

Vynásobit hodnoty kurzem - Power Query

Alfan • 26.4. 7:56

Relativní cesta - zdroje Power Query

Alfan • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

elninoslov • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21