Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  258 259 260 261 262 263 264 265 266   další » ... 298

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

Vidím tam veľké množstvo problémov a nejasností.
-Popis úplne iný, Váš kód úplne iný
-Ktorý list bude ActiveSheet keď sa má daná operácia vykonať? V tomto prípade bude lepšie odkazovať na meno listu, nie na ActiveSheet.
-Čo ak nastane v G4=3 v G5=-3 ? O tom, že G4 bola "3" a vytvoril sa súbor nebudete vedieť, lebo ho prepíšu data z iného riadku počas spracovania "-3".
-Set ws = ActiveWorkbook.ActiveSheet, je úplne zbytočný, keď sa aj tak ďalej odkazujete na ActiveSheet a nie na ten ws.
-Recalc() berie z ktorého listu data na kopírovanie ? Nesmiete to odkazovať v procedúre z Modulu iba cez Range. Už dupľom nie, ak je volaná cez časovač, čiže neviete na ktorom liste budete prekliknutý.
-Ak to hodíte do Calculate, tak dostanete chybu práve na tom spomínanom ActiveSheet. Predpoklad je taký, že tú Calculate vyvolá vzorec, ktorý je v G4 a G5 na liste "List1", odkiaľ sa majú aj brať data na uloženie (???). Keď to zmením na Calculate a ActiveSheet zmením na Sheets("List1") tak to fachá.

Proste veľa vecí, ktoré musíte upresniť.

Podľa mňa kódy sa líšia iba v "spájaní" do stringu (Join vs. For). Ostatné je rovnaké. Testovanie hodnoty cez Cell a Range je to isté. Ak by Vám tie RealTime data náhodou nevyvolali Worksheet_Change metódu, tak skúste použiť Calculate metódu.

Neskúmal som Váš ostatný kód, ani celý zošit. Doplnil som Vám len do List1 makro, ktoré urobí to čo chcete.
http://uloz.to/x4cmpuZa/dashboard-2-xlsm

Ešte malá poznámka: navrhovaná úprava od eLCHa ale zobrazí textbox aj pri kliknutí na iné bunky v riadku, a to sa mi príliš nepáči, tak radšej by som (keby to bolo pre mňa a podľa mňa) upravil začiatok procedúry takto.
Ale tiež by ma zaujímalo, ako je to myslené s tými odkazmi. Ak to má byť tak, že tie texty majú byť nejaké HyperTextové odkazy na napr. listy, tak potom bude treba použiť iný typ objektu, asi ListBox...

Hnevať sa určite nebudem. Áno, pravda, je tam nepresnosť, musí sa križovať Row a Column, ako píše eLCHa.

Ďalej: Lokalizácie, Lokalizace, Localization - snažím sa na to myslieť pri vzorcoch, no zabudol som na makro. V makrách to je tak, že si systém "dokladá" vlastné (lokalizované) názvy objektov, ale iba dovtedy, pokým objekt nepremenujete. Potom už takto premenovaný je na každej lokalizácii. Takže
pridajte do kódu na koniec túto procedúru
Sub Premenuj()
Dim o As Object
Set o = Selection
o.Name = "tbSeznam"
Set o = Nothing
End Sub

zabezpečte zobrazenie TextBoxu a kliknite do neho, bude označený. Potom kliknite do tejto procedúry, a spustite ju F5. Váš objekt sa premenuje na "tbSeznam". Týmto menom nahradte v kóde to pôvodné na 4 miestach. Procedúru "Premenuj" z kódu vymažte. Teraz by malo všetko fungovať na akejkoľvek lokalizácii.
Očislované Shapes by som nepoužíval, radšej pomenované.


Strana:  1 ... « předchozí  258 259 260 261 262 263 264 265 266   další » ... 298

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