Tu je čiastočné riešenie jednej časti problému, a to odchytenie kliku na bod:
https://social.msdn.microsoft.com/Forums/office/en-US/4f9abc39-149e-4f4e-9f62-56d38a93d02f/start-code-when-clicking-in-excel-chart, ale nefunguje to tak ako by bolo treba. Prvý klik je iba označenie série, druhý klik je vypísanie bodu. Zatiaľ neviem, ako to poriešiť.
Po úprave s Terminate, sa to u mňa už neprejavuje.
Keď budete niekomu faktúrovať 1 mld, tak to bude mať škaredo napísané ako tisíc miliónov : 1000.000.000,00
Ak v makre nastavíte separator pri otváraní súboru, tak prejde ten formát od AL:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.UseSystemSeparators = True
End Sub
Private Sub Workbook_Open()
With Application
.UseSystemSeparators = False
.DecimalSeparator = ","
.ThousandsSeparator = "."
End With
End Sub
EDIT: O minútu skôr Vovka, vynikajúce riešenie.
Premennú xlApp ruším až v BeforeClose udalosti. To som ju iba teraz pre testovanie rušil v behu makra, ako ste písal, aby som vyvolal situáciu, že čo sa stane, keď ju po dlhšej nečinnosti zruší Excel sám. A nič sa nestane. Excel si ju vytvorí. Žiadna inštancia mi nikde nevisí. Ale s prepáčením už kašlem na to. Je to, ako ste podotkol, zbytočné.
Nemáte tie dáta náhodou stiahnuté ? Ak áno pridajte ich ako prílohu. ŠÚSR asi minul málo mega na svoje stránky. Vo všetkých prehliadačoch sú u mňa nedostupné.
EIDT: No na tablete cez mobilný internet mi susr ide, na pevnom internete nie. No nič.
Môžete bližšie popísať (nie tak, že Vy viete o čom hovoríte, ale aby sme vedeli my o čom hovoríte), presne ktoré tabuľky máte na mysli, kde pribudne prázdny riadok, ktorý štát chcete s čím priradiť...
Ja Vás chápem, čo máte na mysli. Ale môj Excel ak má xlApp=Nothing, tak si ho sám vytvorí a použije. Ak nieje Nothing, tak ho nevytvorí ale iba použije. Jedine ma napadá, že to Excelácke "zabudnutie" nenastaví premennú na Nothing, ale kompletne zabudne aj deklaráciu. Proste urobí niečo iné ako len set Nothing. Pretože zo stavu set Nothing sa bez problémov sám dostane.
Rozširujúca otázka, myslíte, že cez RecordSet ADODB by to bolo riešiteľné ?
Ale k vytvoreniu novej inštancie predsa neprichádza pri každom teste. Vytvorí sa iba:
1. pri otvorení súboru
2. ak ju Excel zruší, alebo ju zrušíme my manuálne (Quit+Nothing), tak ako ste dal príklad, tak pri najbližšom použití premennej xlApp, si ju Excel vytvorí sám, a iba jednu. Nech pozerám do Správcu úloh ako chcem, tak tam vidím "Microsoft Excel" iba raz. Druhý proces "Microsoft Excel" je už samotný súbor v ktorom pracujeme. Takto sa to správa na mojom Excel 2013. Takže podľa Správcu úloh, žiadneho úbytku pamäti, rýchlosti vykonávania, si nemyslím, že každé volanie vytvára inštanciu, ani nieje u mňa problém pri zmazaní inštancie.
Ak sa to dá overiť ešte inak, pls poraďte.
Podstatné zlepšenie výkonnosti makra spočíva v nevytváraní Excel.Application pri každkom prepočítaní listu pre každú bunku, ale použiť globálnu premennú, a tú v Before.Close zrušiť. Riziko pádu aplikácie a toho, že ostane v pamäti vysieť inštancia Excelu, je rovnaké ako v predošlom prípade, ale neporovnateľne svižnejšia odozva. Takto sa to používať dá.
A ak by niekoho ešte zaujímalo prečo to ExecuteExcel4Makro najskôr mne nešlo sprevádzkovať, tak to bolo práve v tom, že som nepoužil novú inštanciu Excel.Application. Vo funkcii to bez toho nefunguje v procedúre áno.
Dotaz znel, porovnať stĺpec A jedného súboru so stĺpcom C druhého súboru. Presne takú odpoveď dostal. Podľa mňa sa tým už Vážne nemusíme zaoberať. Ale keď sa Vám ešte chce, tak prečo nie. Vždy je sa čo učiť.
Ešte raz zopakujem, že toto riešenie s prepojovacími vzorcami som dotyčnému poslal hneď v prvom mojom príspevku, druhý príspevok celkovo, odoslaný 1.9.2015 21:39. Proste hneď na začiatku prvá rada, prvé riešenie a prvá príloha.
K tomu makru. Vyťahovať cez ExecuteExcel4Macro údaj, a ten vložiť do listu, odtiaľ čerpať údaj do podmieneného formátovania je úplná hlúposť, na to sa má použiť vzorec. Celá debata nieje o vytiahnutí dát s použitím ExecuteExcel4Macro, ale o použití ExecuteExcel4Macro v Podmienenom formátovaní. To sa mi podarilo aj na základe Vašej pomoci rozbehať. Trošku som upravil parametre, aby to bolo rovno použiteľné v formátovaní na viaceré bunky. Takéto použitie spôsobuje ohromné lagy už na 14-tich riadkoch. Takže toto rovno zavrhnime.
Skončime to tým, že jediná rozumná možnosť je tá na ktorej sme sa zhodli, všetci (okrem pýtajúceho sa ), s použitím dolovacieho stĺpca (živého stĺpca, pomocného stĺpca, prepojovacieho stĺpca, alebo akokoľvek inak to nazývate), či už v samostatnom liste, alebo v skrytom stĺpci toho istého listu, ako som to predviedol v prvom príspevku.
PS: V Priložených súboroch si samozrejme v Definovanom názve zmente cestu.
Najjednoduchší variant je dolovací stĺpec, ktorý som uviedol hneď na začiatku a je funkčný.
Obe fnc, čo tam sú, sú rovnaké, iba GetValue_1 má kontrolu chyby. Obe na Office 2013 SK x64 Pro a na Win 8.1.1 x64 vrátia "Error 2023" (akurát prvá to nazve "L1 - list nenalezen"). Je jedno či je zošit otvorený alebo zatvorený. A navyše žiaľ rýchlosť vytvárania objektu Excel.Application je ťažká brzda. Je jedno, či voláte GetValue priamo z listu, z Definovaného názvu alebo z Podmieneného formátovania. Rovnaký výsledok.
Presne takto som sa to pokúšal riešiť aj ja v predošlých príspevkoch.
Buď robím niečo zle, alebo mám pošahaný Excel, alebo to nefunguje. Môžete dať prosím takýto ScreenShot obrazovky, kde budete mať kurzor na B11?
Nie, nie. Nefunguje. Ak Vám áno, dajte prosím prílohu, kde to máte v podmienenom formátovaní.
Pravda. Rovnaké riešenie som navrhol pár tém dozadu, o porovnaní 2 zošitov, ale žiaľ bez odozvy. Akurát ja som to nazval "Dolovací stĺpec". Uvidíme, či bude (ne)reakcia tu.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.