Počet řádků lze zjistit
ActiveWindow.VisibleRange.Rows.CountJe třeba ale dávat pozor, protože pokud VisibleRange obsahuje i případné skryté řádky, je třeba je odečíst.
Bez přílohy z brucha:
První co zkuste je
1 - nastavte přepočet na ručně
2 - spusťte makro
Pokud se výrazně zrychlí, brzdí vás překalkulování. V kódu vypněte kalkulace a na konci je zapněte.
Abyste rozuměl - mohlo by jít použít něco takového:=TEXT(DATE(Vase_Datum);IF(TEXT(DATE(1900;1;1);"mmmm")="január";"mmmm";"Madarsky_Ekvivalent"))
Máte slovenský a maďarský excel. Teď jste v jakém?
Přílohu nestahuji, ale zeptám se.
Slovensky=TEXT(DATE(1900;1;1);"mmmm")vrací "január"?
A jaký je ekvivalent řetězce "mmmm" v maďarském excelu?
http://elcha-en.blogspot.com/2014/12/array-formula-cse-in-vba-code.html
@DAAL
Děkuji, že tady přispíváte. Máte totiž jiný pohled na věc než my - čistě programátorský. Škoda, že nejste registrovaný. Občas vaše příspěvky hledám a bylo by to snadnější ;)
O konvertoru, který by spolehlivě převedl xlam/vba do COM-Addin jsem neslyšel
Zajímala by mne jedna věc. Pokud by existoval - použil byste ho? Já jsem totiž k takovým automatickým kreátorům a transformátorům hrozně skeptický - přijde mi, že hledat chyby v něčem takovém je horší, než když to píšu ručně a tu chybu odladím po napsání úseku kódu. Je to stejné, jako záznamník maker - nedám na něj dopustit - ale když vidím kód v něm vytvořený... Navíc, tady se bavíme o doplňku xlam - takže to zase nebudou kilometry kódu.
@AL
Nerad to přiznávám, ale tady jsme prostě zaspali dobu. Visual studio je zadarmo - tedy některé verze, tzn nějaké pokusy můžeš udělat sám. Ano, zabere to čas, ale co nám zbývá. Ale jsem si jistý, že to za to stojí. Jen ten čas...
Já už za sebou nějaké pokus mám (několik let zpátky) - a za sebe doporučuji C# - u .NET je to sice jedno, rychlost je stejná, ale když si na něj zvykneš...
Nicméně, pokud chceš dělat "kód pokiaľ možno utajený", asi není jiná cesta.
Hlavně nemá cenu vytvářet obecné řešení. Toto je specifická úloha, kterou nelze řešit bez plné databáze.
Obecně ale - dá se to udělat manuálně (vzorce + filtr + CTRL+ENTER) v řádu hodin - je tam sice 300k záznamů, ale nepočítám, že tam bude tolik chyb. On ten Petdr - pokud se bavíme o české databázi - bude z dvaceti případů 19x Petr. A s tím už se dá začít...
@elninoslov
To je celé. Nič viac. Hodí to Overflow... Musel sa nejak záhadne poškodiť u mňa Excel, to predsa nemôže byť logicky vysvetliteľné...
Ne - tak to funguje vždycky a všem ;))
To je problém toho, že VB není striktní jazyk a kompilátor někdy sám rozhoduje, co udělá. Tady jsou obě čísla typu Integer, takže předpokládá, že výsledek bude taky Integer. A ejhle. Je to stejné, jako když někdo napíšeCells(1) = 1místoCells(1).Value = 1V 99% to bude fungovat správně. Ale v tom jednom to hodí chybu a nejste schopni přijít na to jakou.
Je třeba si to prostě pamatovat a někdy třeba i zbytečně raději používat konverzní funkce - prostě vyhnout se tomu, že rozhoduje za vás.
@vovka
Když tak kecáme
seznam literálů pro automatické opravy není problém měnit pomocí VBA
Ne, že bych nevěřil, že to u sebe nedokážete ošéfovat. Počítám, že máte na mysli - při startu souboru nahrát - pří zavření odstranit.
OK - 2 otázky.
1) když už to slovo v databázi je a má jinou náhradu - jak to řešíte.
2) nekorektní uzavření - tedy nedojde k Before_Close. Jak při příštím spuštění poznáte, která slova chcete a která nechcete - jestli mi teda rozumíte...
Tohle je pro mně velmi problematická činnost.
Aha - takže ti jde o to, aby ten kód nikdo neokopíroval, nechápal nebo tak něco? Tak, to je asi ztráta času... Také jsem nad tím kdysi uvažoval - našel jsem nějaký kód, kde autor použil šílené názvy procedur a proměnných. Hned mně napadlo - stačí párkrát použít CTRL+H na celý projekt - popřípadě krátká procedurka...
Když nechceš C#.NET, můžeš zkusit VB.NET - ten je VBA bližší.
Nebo starý VB6 - tam to určitě taky nějak půjde.
Ale asi se na to - víš co, viď? ;)
@vovka
S kontrolou pravopisu mám velmi dobré zkušenosti a aktivně ji využívám; nevím, proč ji elCHa odmítá.
Jen uvažuji nahlas
Jak zajistíte, aby to fungovalo pouze pro konkrétní soubor.
Když to dokážete, jak zajistíte, aby to fungovalo pouze pro konkrétní oblast - v křestním může být Petrov chyba, v příjmení správně.
edit
A to pomíjím údržbu
@elninoslov
Našel jsem to
http://wall.cz/index.php?m=topic&id=25393
@ligidy
Možná elninoslov vymyslí nějaký způsob, který pomůže. Ale jediný správný způsob je zadávat data správně a kontrolovat už při zadávání. Pokud to nelze, udělejte si seznam pravděpodobných chyb - resp. správných jmen a když nenajde, je to chyba - něco, co navrhl vovka (myslím Když si např. vytvoříte seznam, v žádném případě kontrola pravopisu) - ale ty opravujte ručně.
Jak například rozlišit mezi českým Petr a slovenským Peter, když v databázi máte třeba Petdr.
Automatické věci jsou fajn, ale všeho s mírou a je třeba dávat veliký pozor.
@elninoslov
tohle už jsme tu spolu řešili ;)
Řekněte - v tom kódu máte opravdu číslo 32 767 nebo jak to máte přesně.
Pokud to tam máte tak jako v příspěvku, přetypujte
odkial = 32767& + 1
odkial = 32767 + 1&
odkial = 32767 + 1#
odkial = CLng(32767) + 1
Povedzte Kefalín, čo vy si predstavujete pod takým pojmom "rýchly a bezbolestný postup"?
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.