Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  77 78 79 80 81 82 83 84 85   další » ... 302

???
Private Sub UserForm_Initialize()
Dim cas0 As Double, cas1 As Double

cas0 = Now()
cas1 = Int((cas0 * 24) - 1) / 24

Label1.Caption = "Aktuální čas: " & Format(cas0, "hh:mm")
CommandButton1.Caption = Format(cas1, "hh:mm")
CommandButton2.Caption = Format(cas1 + 1 / 48, "hh:mm")
CommandButton3.Caption = Format(cas1 + 1 / 24, "hh:mm")
CommandButton4.Caption = Format(cas1 + 1 / 12, "hh:mm")
End Sub

Ani som nevedel, že to ide makrom vynúť :) Tak pozrite do makra, odkrokujte, aby ste zistil kedy to zmizne. A ak kliknete pravým myšítkom na StatusBar nemáte tam možnosť to zapnúť?
Ak v makre pracujete so StatusBar-om, po ukončení práce skúste aplikovať
Application.StatusBar = False
ale to je iba čisto pokus, páč u mňa použitie StatusBaru v makre "nezničí" počet, priemer, súčet.

Prípadne
Application.DisplayStatusBar = True

Nie, zmena toho riadku iba spôsobí, že sa dáta neprepíšu od bunky A2, ale pridajú sa až za poslednou vyplnenou v stĺpci A. Teda vyhovenie požiadavke neprepisovania, ale pridávania.

Podľa toho čo píšete, si neviem ani len predstaviť realizovateľnosť. Prečo? Tak napr.:
Spustím makro s diskom ABC, bude tam film Avatar.mkv. Potom spustím makro na disku DEF, kde bude tiež Avatar.mkv. Čo teraz? Je to iný film s rovnakým názvom? Rovnaký v inej kvalite? Ten istý iba presunutý na iný disk? Odkiaľ toto makro zistí? Dajme tomu, že keď je z iného disku, tak sa pridá. Teda budú tam dva Avatar.mkv. Potom ho presuniem na tretí disk, alebo do iného adresára. Spustím makro, a čo teraz? Pridá tretí? Zmaže prvý, druhý, ... ? Ak film fyzicky zmažem, spustím makro, ako makro zistí, či som film zmazal alebo či tam nikdy nebol?
Fúha, tak toto prinesie ešte veľké hlavolamy. Problém je v samotnej podstate filmov. Oni sa totiž často menia, presúvajú, mažú, a to všetko mimo kontrolných mechanizmov DB či kvázi-DB v Excelovskom makre.

Sperhak napsal/a:

...Tie dáta chcem použit ako databázu a dalej s nimi pracovať a priradovat k nim veci.
Teraz som zistil že ak to zmažem a znova načítam tak mi tie veci čo som knim priradil náhodne priradí k iným filmom...

Ak spustíte makro na rovnakých vstupných dátach (nezmenené súbory, názvy, umiestnenie, rozloženie po adresároch, ani zmena dátumov a časov), tak neexistuje, aby makro vrátilo iný výsledok. Čiže ak ste v iných stĺpcoch doplnil ďalšie info, a potom znovu spustil makro, muselo Vám prepísať tie stĺpce, ktoré makro menilo, rovnakými dátami, a tie doplnené v iných stĺpcoch musia sedieť.

Každopádne, z toho čo píšete, vyplýva jedna alarmujúca vec. Ako chcete docieliť, že opätovným načítaním súborov z nejakého disku/adresára, sa pridajú do DB len info o tých súboroch, ktoré v DB ešte niesú? Lebo nechcete duplicity opakovaným spúšťaním akra na rovnakom zdroji??? DB je preto DB, lebo majú záznamy nejaký jednoznačný identifikátor ID. Takže pri pridávaní by ste mal do jedného stĺpca zapisovať automaticky sa zvyšujúce ID, aby nedošlo k zámene dát. Ak napr nahradíte na disku FHD film UHD filmom s rovnakým názvom, nový film bude na rovnakom umiestnení ale s iným ID. A filmy ktoré mažete, zmažte aj z DB. Tak nedôjde k omylu.

A čo sa týka toho zápisu. Vôbec nestačí iba odstrániť mazanie predošlých výsledkov (to ste tam mal aj pred tým). Treba upraviť zápis nových dát na prvý voľný riadok, pod pôvodné dáta. Zmeňte časť END_PROC na toto:
END_PROC:
If bPrint Then Sheets("Hárok2").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(CountFiles, 6).Value = Application.Transpose(Info): Sheets("Hárok2").Activate


A ďalej v prípade uchovávania starších dát, treba pridať aj stĺpec s názvom disku, lebo to potom už nemôže stačiť, keď sa pri každom spustení iba prepíše bunka G2.

No treba to ešte premyslieť.

Riešenie od veny je dostatočné, a tak ako navrhuje, takéto rozmedzia by mali byť rozdelené. Na margo, čisto teoreticky by to však šlo aj také spojené overiť, jeden z príkladov:
=CHOOSE(SUMPRODUCT(COUNTIFS([@Level];$G$2:$G$8;[@Tarif];">"&REPLACE($H$2:$H$8;1;FIND("-";$H$2:$H$8);""))+COUNTIFS([@Level];$G$2:$G$8;[@Tarif];">="&LEFT($H$2:$H$8;FIND("-";$H$2:$H$8)-1)))+1;"POD";"OK";"NAD")
=ZVOLIT(SOUČIN.SKALÁRNÍ(COUNTIFS([@Level];$G$2:$G$8;[@Tarif];">"&NAHRADIT($H$2:$H$8;1;NAJÍT("-";$H$2:$H$8);""))+COUNTIFS([@Level];$G$2:$G$8;[@Tarif];">="&ZLEVA($H$2:$H$8;NAJÍT("-";$H$2:$H$8)-1)))+1;"POD";"OK";"NAD")

K ostatnému, čo píšete, sa pozriem niekedy neskôr. Teraz len rýchlo k tomu, že to nefachá v Roote disku. To je preto, lebo Win v Roote každého disku vytvorí skrytý adresár "System Volume Information" s vyhradeným prístupom. Nastane chyba pri získavaní počtu obsiahnutých súborov (obmedzený prístup), a keďže tam máte možnosť prerušenia makra (formou vyvolania a odchytu chyby), tak vlastne táto chyba prístupu, vyvolá rovnaké ukončenie ako ESC. Preto by som navrhol testovať cez Len(Dir()) cestu, a ak sa jedná o takýto adresár, dostanete 0, tak sa to dá obísť aj so zachovaním umelého prerušenia makra cez ESC pomocou vyvolania chyby, a zároveň to nekrachne na adresároch s obmedzeným prístupom.
pred riadok
Count = objFolder.Files.Count
dajte toto
If Len(Dir(objFolder.Path, vbDirectory)) = 0 Then Exit Sub

No elninoslov má funkčný základ napísaný, akurát mám pracovné veci. Momentálne píšem z auta...

EDIT 13.7.2021 22:36:
Už som konečne doma. Tu máte rýchlo beta verziu...
V najbližších dňoch, no neviem neviem, asi nepomôžem, uvidím ako sa mi to tu bude vyvíjať ...

Uvažoval som aj nad možnosťou to urobiť tak, že sa urobí najskôr zoznam súborov, aby sa vedelo koľko ich je, a potom by sa začali načítavať info. Kvôli zobrazeniu ProgressBaru. Na to som zatiaľ pre nedostatok času zanevrel.

Na to treba rekurzívnu metódu, nie vnáranie cyklov. Už som sem také niečo dával X krát. Ale skôr ako to nájdem, to znovu napíšem. No upresnite to, nech to nerobím zbytočne. Ten Váš kód práve postráda to hľadanie o ktorom píšete. Jedine, že by niečo porovnávala tá metóda "PrintFiles". Čo má byť účelom? Máte nejakú časť názvu, a chcete vypísať cestu k súboru, ktorého názov obsahuje daný text, či čo? Alebo chcete vypísať celú adresárovú štruktúru? To potom nieje hľadanie súboru.
...

V prílohe je ale napísané toto:
Prodleva ve zpracování
(pokud bylo založeno v:
pátek -48 hodin
sobotu -48 hodin
neděli -24 hodin)

Tak ako je to?
Pre ten Váš popis vyššie, kde ŠT/PI je -48 a SO/NE je -24 môže byť napr.
=J2-(WEEKDAY(G2;2)>3)*48+(WEEKDAY(G2;2)>5)*24
=J2-(DENTÝDNE(G2;2)>3)*48+(DENTÝDNE(G2;2)>5)*24

???
=J2-((WEEKDAY(G2;2)>4)*48-(WEEKDAY(G2;2)=7)*24)
=J2-((DENTÝDNE(G2;2)>4)*48-(DENTÝDNE(G2;2)=7)*24)

=SUBSTITUTE(B4;"dddd";TEXT(G10;"d.m.")&YEAR(G10))
=DOSADIT(B4;"dddd";HODNOTA.NA.TEXT(G10;"d.m.")&ROK(G10))

Naschvál som rozdelil dátum na "d.m." a YEAR(), aby to nerobilo problém pri inej jazykovej mutácii Excelu. V CZ totiž rok nie je "yyyy" ale "rrrr", a to robí pri prípadnej multijazyčnosti problém.

Aleb dajte tej bunke vlastný formát
"V Praze, dne" d.m.yyyy
a do bunky iba vzorec
=G10
prípadne si to ošetrite na možnosť nevloženia žiadneho dátumu
=IF(G10="";"";G10)
=KDYŽ(G10="";"";G10)

prípadne to ošetrenie môžete urobiť priamo v tom formáte
"V Praze, dne" d.m.yyyy;;;
možností je habadej ...

Google prvý odkaz

Riešením by bolo aj to, aby ten text bol vo formáte bunky, a nie pred vzorcom. Takže Vlastný formát
"Celkový zisk v CZK:"•
# ##0,00

kde namiesto tej guličky • dáte Alt+010. V bunke bude následne iba číslo podľa vzorca
=SUBTOTAL(9;F2:F1000)
Nevýhoda je (neprišiel som na to ako to obísť), že musíte tie 2 stĺpce so SUBTOTAL rozšíriť na celkovú šírku takú, akú by mal vypisovaný text s číslom spolu, aj keď sú pod sebou. Odhadom asi o 1,5 cm.

Jednoducho pomocným stĺpcom

Milan-158 napsal/a:

...anebo v momentě když si to nepřejeme, to potlačit pomocí Application.EnableEvents = False...

Musím Vás opraviť. Toto pri formulári VBA nefunguje. Na nevykonanie onChange používam globálnu premennú napr.
Dim bEnableEvents as Boolean
a následne v onChange hneď na začiatku testujem či je
If bEnableEvents Then
... vaše makro onchange ...
End If

a pritom bEnableEvents nastavím na False vždy pred volaním procesu, ktorý spôsobí "nechcenú" zmenu. Po dokončení naspäť na True.


Strana:  1 ... « předchozí  77 78 79 80 81 82 83 84 85   další » ... 302

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