< návrat zpět

MS Excel


Téma: Chyba, kterou nevidím rss

Zaslal/a 16.6.2018 14:15

VLookUp jsem použil milionkrát. Teď mi nefunguje v naprosto triviálním makru. Něco dělám blbě, ale nedokážu najít co. Zkusil jsem změnit snad všechno, ale nedaří se mi najít jádro pudla. Obrázek dole snad zachycuje vzniklou situaci dostatečně názorně. Co je špatně???

Příloha: png40718_zahada.png (29kB, staženo 93x)
40718_zahada.png
stop Uzamčeno - nelze přidávat nové příspěvky.

Strana:  1 2   další »
#040720
avatar
Ty vole, Vladimíre, víš, že bych ti zkusil pomoct, ale do pytle, proč už se mě tady jako třetí člověk snažíš nas... a dáš obrázek o ničem? Zadání? Moderáři neprominou - na táááákhle sprostý slovo.

zahada.png

To víš, že budu aktuální obsah proměnných luštit v obrázku...citovat
#040721
avatar
Ty vole, Petře, víš, že nejsem programátorskej začátečník. V okně modulu je uvedený text makra. V okně Immediate jsou uvedeny veškeré okamžité hodnoty, které v makru ovlivňují ten VLookUp (včetně hodnot v tabulce, ve které VLookUp hledá).
Nedělá to nic jiného, než že v tabulce účetních souvztažností (v příkladu má jen 6 řádků) hledá, jestli se účetní položka finančně chová jako kladná nebo záporná. Jde samozřejmě o testovací proceduru, která nevede dál, než k zjištěné chybě.
Buď blbnu já, nebo blbne Excel. Rozsuď nás!
Udělal jsem testovací sešit, který obsahuje to nejnutnější. Makro se volá z listu Soupis tlačítkem. Jak jsem přitom zjistil, chyba vznikne pouze tehdy, když už jsou na listu Úroky nějaká data. Zatím netuším proč, ale tím směrem se vydám!
Příloha: zip40721_chybavlookup.zip (21kB, staženo 31x)
citovat
#040722
avatar
"Ty vole, Petře, víš, že nejsem programátorskej začátečník."

A víš ty co? Seš...
Na to, kolik let programuješ, programuješ bez pardonů jako prase.

Že bys komentoval kód, nevidím. Je mi jedno, jestli to máš čistě pro sebe.
Fajn, kašleš na maďarskou konvenci pro proměnné, tvoje věc. Proměnná Rrr - no to už si děláš prdel...
Na co je skrytý 3. řádek, nevím. Spoléhat tak naslepo na CurrentRegion, mno...
Namísto, aby sis nastavil listy od objektových proměnných, tak tupě spoléháš na začátečnický Select.
A jádro pudla? Že nevíš, že je sakramentský rozdíl chtít po SVYHLEDAT křížem hledat text v číslech a naopak, to je věc další.

Dim Vztah As Long
Vztah = CLng(Cells(i, 5) * 1000 + Cells(i, 6))

Takže kamaráde, jak tě mám rád (ač se to nezdá), tak s tímhle bych tě vyrazil...citovat
#040724
avatar
Synku, to že nakonec jsou testovací hodnoty a výběrové hodnoty pro VLookUp rozdílného typu, je důsledek toho, že jsem se pokoušel hýbat úplně se vším a tohle byl jeden z těch pokusů. Možná Tě to zarazí, ale kupodivu to nezpůsobovalo vůbec nic. Původně byla v tabulce čísla, a tak jsem vytvořil číselnou hodnotu pro testování. Takže v tom rozhodně ta chyba nespočívá. Konvence pro používání proměnných jsem za padesát let programování používal po dobu asi půl roku poté, co jsem se o tom vynálezu dozvěděl. Nepřineslo mi to vůbec nic, a tak jsem toho nechal. Příště místo Rrr použiju Vrr! Skutečné kódy si komentuji dost pečlivě. U desetiřádkového kousku mne to nenapadlo dělat. K mému stylu programování obecně - na Pandoře si ho mnozí pochvalovali jako dobře čtivý.
Na CurrentRegion se spoléhám velmi často a nikdy jsem si o to nerozbil za dvacet let s VBA hubu. A nakonec - co se Ti nelíbí na tom, když ze dvou trojmístných indikátorů udělám jeden šestimístný? Jistě jsem mohl použít spojení řetězců a v tabulce mít číselný text. Smyslem bylo ušetřit na testování!
Dohromady jsi mi toho vytkl spoustu zbytečného a neporadil nic užitečného. Asi máš profesní tik a nutkavou potřebu známkovat. To ale neznamená, že Tě nemám rád. Prostě takový jsi!citovat
#040725
avatar
Opindávej si to jak chceš, pokud jsem letmo vyzkoušel, problém je v proměnné Vztah typu String.citovat
#040726
avatar
Buď si paličatej, jak chceš, ale v tom ta chyba nespočívá (i když jde o nepominutelný nesoulad). Vba umí implicitně převádět čísla na texty, takže stringová proměnná by měla převzít číselný výraz jako text. Je pravda, že to není zrovna standardní, ale je to tak. Jiná věc je, že by se ten string nemusel líbit porovnávací tabulce s formátem General. Zjistil jsem ale, že změna naformátování srovnávacího sloupce na text rovněž nezabrala. Tyhle hokus pokusy jsem udělal daleko dřív, než jsem se šel zeptat na fórum. Chyba trvá dál i přes doporučenou změnu!citovat
#040727
elninoslov
Nechce sa mi premýšľať nad všetkým, čo sa tu už popísalo, tak len uvediem pokus na tej prílohe. Keď si dám
WorksheetFunction.VLookup(Vztah * 1, Seznam, 2, 0)
alebo
WorksheetFunction.VLookup(Val(Vztah), Seznam, 2, 0)
tak to fičí.citovat
#040728
avatar
No myslím, že xlnc poradil dosť užitočne
Dim Vztah As Long
vyriešilo celý problém. Nič iné nebolo treba. A bolo zbytočné kvôli takejto prkotine sa toľko rozpisovať.citovat
#040730
avatar
Omlouvám se za přestřelku s xlnc. Nevyvolal jsem ji, ale když už jsem byl prohlášen za břídila, měl jsem potřebu reagovat. S Petrem si asi nikdy nepřestaneme okopávat kotníky 2 .
@ Marjankaj
Vaším návrhem na Vztah As Long to začalo, když jsem to napsal. Proto jsem Vztah počítal jako aritmetický výraz. Zlobilo to, a ani návrat k Vztah As Long nepomohl.
@ elninoslov
obrat Vztah * 1 nic nezlepšil. Teprve Val(Vztah) v kombinaci s Vztah as String zabral. Způsob plnění proměnné Vztah nesehrál žádnou roli. SLÁVA A DÍK !!!
Moje předchozí informace, že k chybě dochází jen pokud na listu Úroky jsou data, byla mylná. Vznikla totiž nevídaná situace, že se program zastavil při chybě výpočtu VLookUp, aniž by došlo ke zprávě o výpočetní chybě. Ale to už je jiný příběh.
Velmi děkuji za konstruktivní nápady a pomoc. Snad zase začnu věřit VLookUpu. Věc jsem mimochodem už včera obešel tím, že místo VLookUp jsem použij konstrukci Select Case přímo v makru.citovat
#040740
avatar
Veškerý tvůj problém je, že hledáš text v číslech. Ale komu není radí, není vzájemné hospodářské...citovat

Strana:  1 2   další »

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