Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  248 249 250 251 252 253 254 255 256   další » ... 289

Nevoláte to makro z iného zošitu, alebo formulára ? Skúste použiť "With". U mňa všetko OK, ale volám to z aktívneho listu "List1". Ak to bude s "With" tak to môžete volať odkiaľkoľvek.

No, akoby som to povedal ... to Vaše makro je hrozné, vymazal som Vám tie tisíce riadkov, zjednodušil mnoho vecí, zrušil Selecty, ale poviem Vám, že minimálne od tej hviezdičkovanej čiary, ktorú som Vám tam urobil, netuším o čo ide. V tom makre sa pokúšate o toľko Selectov, Filtrov, vkladaní riadkov, jednoducho som to nerozlúštil, a vôbec netuším, či som Vám s tým zjednodušovaním neurobil nejakú chybu. Každopádne moje makro som Vám upravil tak, aby sa volalo pomocou Call odkiaľkoľvek, teraz je na konci Vašeho. Čiže už to nemáte tak, že sa spustí automaticky. Spúšťa ho Vaše makro, čiže ako si spustíte to Vaše makro neviem.

Aby som toľko nepísal, tiež nemám čas, ak chcete urobiť z jednej tabuľky úplne inú, a chcete s tým pomôcť, bez reálnych vstupných dát, a reálneho požadovaného výstupu, Vám s tým asi nepomôžem. Pretože je to čistá tipovačka (z mojej strany).

Pozrite sa na to, a niečo s toho snáď použijete.

To s tým "Zatvoreným" súborom bol len typ, takže to neberme ako mernú mincu. Celý môj príspevok je len typ, ako to mohol užívateľ asi myslieť, lebo presne takto uvažuje väčšina ľudí. To nieje výtka, len konštatovanie. A nemyslel som zatvorený ako Closed, ale "akože zatvorený" ako Hide. To som aj písal že cez inštanciu Excelu.
Každopádne prípadné riešenie (ak nejaké bude), zaujme asi viac ľudí. Keďže drvivá väčšina si pletie Excel s DB. Ale to je prirodzené, lebo Excel je docela User Friendly, narozdiel od takmer akejkoľvek DB.
Počkajme na Tlumic01, uvidíme.

Fúúha, tak teraz Vám už nerozumiem vôbec. Z tohoto makra chcete volať nejaké iné makro ? Stačí do kódu na vhodné miesto (podľa toho čo to má robiť) napr. pred "End Sub" v prípade, že sa má vykonať vždy pri zmene (akejkoľvek):
Call NazovMakra
Ak sa to má vykonať iba vtedy keď sa mažú rie riadky, tak pred "Application.EnableEvents = True" to Call dajte.

Ak má tento proces vymazávania byť volaný z iného makra, tak bude lepšie prerobiť toto makro na proceduru a nie udalosť, a volať procedúru z Vašeho makra.

Nieje problém, len sa musíte vyjadrovať podstatne konkrétnejšie, a urobíme...

Zrovna ste písal príspevky, keď som editoval môj 1
Nie. Excel sníma rôzne udalosti. A vo Vašom kóde sa sníma udalosť akejkoľvek zmeny v bunkách celého listu. Ak teda čokoľvek, kdekoľvek zmeníte, vyvolá sa Váš kód, ktorý skontroluje, či bola zmena v stĺpci 4. Ak nie, nič sa neudeje, ale ak ńo, skontroluje či ste nemenili náhodou hlavičku, vtedy tiež nič neurobí. Ale ak ste vykonali zmenu v D od 2. riadku pokiaľkoľvek, tak zistí koľko riadkov v celom liste vo všetkých stĺpcoch je použitých, ďalej zistí posledný zaplnený riadok v D, a jednoducho vymaže všetko za posledný zaplneným v D. Makro sa spúšťa automaticky samo.

EDIT: Aha, Vám nejde do hlavy, prečo tam boli tie riadky, keď ste súbor otvoril ? No preto aby ste videl, čo to urobí. Stačí proste napr. označiť prázdnu bunku a stlačiť DELETE. Čáry-máry-fuk, a je to.

Ten môj kód funguje presne tak ako chcete. Skúšali ste ho vôbec ? Ja som ho iba skopíroval do Vašeho zošitu, a fachá.
Navyše som Vám ho teraz aj okomentoval, aby ste vedeli, čo to robí.

EDIT:
urobte nejakú zmenu v stĺpci 4 (D), napr. vymažte bunku, a uvidíte, že to funguje. Reaguje to na zmenu v stĺpci D, teda Vy makro nespúšťate, ono to je "autonómne".

To bol čistý tip, nič viac. Záleží na toľkých veciach, ktoré neboli v spomenuté zadaní ...
-Bude to sieťový súbor, ktorý musí byť stále aktuálny?
-Bude zatvorený, či otvorený?
-Ako často musí prebiehať aktualizácia zoznamu (ak sa nejedná o prvý bod)?
-Akú udalosť prípadne použiť? Záleží na presnom použití, tak ako píše eLCHa.
-Ak by sa nejednalo o bod 1, tak môže byť aj ten TXT s importom pri otvorení zoznamového zošitu, ale problém bude ak sa na ten zoznamový zošit bude naväzovať iná činnosť, napr čítanie z tohto zošita (zatvoreného) ďalej.
...

No uvidíme po upresnení.

No veď práve o tom hovorím. Len som napísal, že som asi pochopil čo dotyčný chce. Ale netuším ako to urobiť, preto som napísal že to bude problém...

Musí sa vytvoriť nová inštancia Excelu a v nej manipulovať so Zoznamovým súborom, inak ma nenapadá. Takéto riešenie je tu myslím už X-krát prezentované.

Ja som to asi pochopil.
-V šablóne bude makro (ak je to možné) Worksheet_Change pre sledovanú oblasť.
-Každú zmenu zapíše do iného zatvoreného zošitu na prvý prázdny riadok listu Spolu.
-V tomto zatvorenom zošite bude v druhom liste Zoznam, vytriedenie jedinečných hodnôt z listu Spolu.
-Čiže keď ho otvoríme, budeme mať k dispozícii zoznam.
-A je to tu, problém zisťovania počtu riadkov v zatvorenom zošite, zapisovanie množstva zápisov do zatvoreného zošitu...

Bude to problematické...

Pre niečo takéto je dôležité vedieť, či bude mať tabuľka hlavičky, alebo koľko riadkov bude pred samotným prvým dátovým riadkom.

- Budú dáta v tabuľke začínať v A1 ? Ak nie, tak kde ?
- Pod posledným riadkom tabuľky bude ešte niečo iné ? Čiže aj vedľa tabuľky či niečo bude presahovať smerom dole posledný riadok tabuľky.
- V ktorom stĺpci teda má byť kontrola posledného dátového riadku, najskôr ste vravel 4. teraz 3. ?

Poprosím odpovedať na všetko, lebo je to dôležité pre určovanie pozície.

Skúste vymazať to X uvidíte, čo sa udeje, či je to to, čo ste chcel.

-Otvoríte si zošit
-Stlačte ľavý Alt+F11
-Rozplusknite si položku VBAProject(názov Vašeho zošitu)
-Rozplusknite si pod tým Microsoft Excel Objects
-Dvojklik na názov listu, v ktorom to chcete mať.
-Do toho bieleho okna vpravo píšete makro kód, tak tam to vložte.

Takto to môže byť?

V udalosti Workbook_SheetCalculate vymažte podmienku
If Sh.Name <> "sheet1" And Sh.Name <> "Indices" Then
End If


Nechajte tam iba 2x Call

@:S vytváraním txt súbormi to nemá nič spoločné.
Ale môže mať. Ešte raz skúsim preformulovať otázku. Vidíte sám, že je volanie/nevolanie, udalosti/neudalosti, vyvolané/nevyvolané, nieje je úplne jasné čo z aktualizáce dát vyvolá akú udalosť (alebo nevyvolá), tak sa pýtam:
Tú kontrolu, či sa má zapísať TXT, potrebujete robiť v takých intervaloch ako kopírujete tie dáta ? Ak áno, tak potom jednoznačne urobiť všetko práve v tomto časovači, pretože, ten sa spustí s istotou každých 30 min. A nemusíte sa spoliehať, či nejaká aktualizácia vyvolá prepočet vzorca pri zmenenej alebo nezmenenej novej hodnote, alebo zmenu v inom naviazanom, ale nezobrazenom liste...

EDIT:
Ešte poznámka, procedúru Recalc je potrebné zmeniť na
Sub Recalc()
With ThisWorkbook.Worksheets("sheet1")
.Range("G25:G52").Value = .Range("F25:F52").Value
End With
Call StartTime
End Sub

Inak skolabuje, ak budete prepnutý náhodou v inom zošite práve v momente "Ticku".

Ešte poprosím nejaké upresnenie:

-Takže každých 30 minút "tikne" Timer, prebehne procedúra Recalc, ktorá skopíruje Realtime data z počítaného stĺpca F25:F52 do G25:G52, pre ďalšie spracovanie. To má vyvolať udalosť (či už Worksheet_Change alebo Worksheet_Calculate) a v v nej sa má skontrolovať či v liste je hodnota 3 v G4 alebo -3 v G5. V ktorom liste ? Vo všetkých listoch okrem "sheet1" a "Indices" ? Takto to mám teraz urobené cez Calculate (stačí jedno, netreba pre každý list zvlášť).

-Ak vo všetkých, tak vidím ďalší problém v tom, že ak bude v G4=3 na liste "AUDCAD", tak sa uloží TXT, ak bude ale G4=3 aj na inom liste napr. "AUDCHF", opäť sa uloží TXT,a predošlý záznam z "AUDCAD" prepíše. Takže bude lepšie buď pre každý list mať vlastný TXT súbor, alebo jeden TXT súbor, do ktorého sa budú pridávať riadky (s identifikátorom listu, ktorý záznam vyvolal).

-A ešte sa vrátim k vyvolanej udalosti. Nevieme akým spôsobom tá Vaša aplikácia vkladá tie aktualizované údaje do Excelu, ale ak pri tom vypína EnableEvents, tak to nevyvolá Worksheet_Change udalosť. Udalosť Worksheets_Calculate by to ale po dokončení tak či tak vyvolať malo. A tu vidím ďalší zádrhel. Neviem ako často sa Vám tie "RealTime" dáta vkladajú, ale v takomto prípade po každom aktualizovaní vyvolajú Calculate, čiže aj prípadný zápis do TXT. Ak chcete ale prípadný zápis do TXT realizovať práve až v 30 min intervaloch, potom by bolo vhodnejšie volať kontrolu a zápis priamo v Recalc.

-Navyše, ak bola pri minulej kontrole v G4 3, a pri ďalšej tiež 3 (čiže sa hodnota nezmenila) tak sa mi Calculate nespustí. Takže by som to opäť riešil poslednou vetou predošlého bodu.

Rozpracovaný súbor.
http://uloz.to/x9p2n6xY/db-alerts-auto-rar


Strana:  1 ... « předchozí  248 249 250 251 252 253 254 255 256   další » ... 289

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

Týden v roce

Petr92 • 16.7. 15:34

Řazení podle času v kategoriích

veny • 16.7. 11:34

špatný výpočet ze zisku - příčina?

Anonym • 12.7. 22:56

špatný výpočet ze zisku - příčina?

Jakoby • 12.7. 12:35

Řazení podle času v kategoriích

Marekh • 12.7. 9:55

Porovnávací Tabulka

Jess • 8.7. 20:49

Vzorec pro zkopírování obsahu buňky.

veny • 6.7. 8:28