» Poradna » Programy

Dlouhé VBA makro, při stejném zadání často jiný výsledek

 |   |  Microsoft Windows 7 Firefox 64.0

Dobrý den, napsal jsem si celkem dlouhé makro. Problém s ním je ten, že často při stejných vstupních hodnotách vrátí špatný výsledek. Musím ho projet třeba i třikrát než jsou výsledky správně. Nemáte tušení proč? Makro jsem si samozřejmě krok po kroku projel a vše je v pořádku.Tada je to makro: (kdyžkat můžu zaslal i celý soubor)https://pastebin.com/9dBviCVB//Zkrácen dlouhý kód pomocí odkazu.//

Odpovědi na otázku

 |   |  Microsoft Windows 10 Firefox 60.0

A že by ses aspoň uráčil napsat, co to má řešit? Tedy - předpokládám, že to něco řeší, když má název "řešič_MN_V" - mimochodem: opravdu v názvu makra potřebuješ diakritiku??? Taky by nebylo od věci napsat, jaké má makro vstupy a kde je očekává. Nebo si myslíš, že to někdo bude luštit z toho makra? No a k to mu makru - pevně doufám, že to máš napsáno lépe, strukturovaně s odsazením jednotlivých vnořených cyklů, větví IF atd. Pokud ne, tak potěš koště, v tom aby se prase vyznalo...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 71.0.3578.98

jj, kdo nepoužívá diakritiku v psaném textu a kdo diakritiku používá v názvech maker, je neandrtálec , ale vážně, makro je v podstatě funkce, procedura. Kdo v jejich názvech používá diakritiku, ten je programováním nepolíbený. Snad všechny ostatní jazyky to ani nepovolují...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 71.0.3578.98

Toto je strašné:If .Cells(53, 6) = "OK!" ThenIf .Cells(54, 6) = "OK!" ThenIf Abs(.Cells(24, 10)) > 1 ThenIf Abs(.Cells(45, 10)) > 1 ThenVíš co je and, or?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 64.0

Ano je to napsané hloupě, je tam sposta nesmyslů. Proč jen jsem se dopustil takové urážky programování?! Treba protože NEJSEM PROGRAMÁTOR!! Kdybych byl a rozuměl tomu, nemusím se ptát. Potřebuji, aby to fungovalo a ne názory na to, jak blbé to je. Pojdě mi dát nějaký nápad, jak chybu odhalit. Vysmívat se mi můžete potom.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 64.0

Tak zkus trochu popsat, co to má dělat, ať se to nemusí zpětně luštit podle z kódu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Android AppleMAC-Safari 5.0

V podstatě jde o to, že v listu "Výsledky" jsou uložené vybrané hodnoty (z komerčního sw), které potřebuji posoudit a do stejného řádku za ně vypsat jak posudek dopadl. Samotné posudky se provádějí v ostatních listech (nejsou součástí makra). Principiálně makro dosazuje různé konfigurace hodnot, kterými se posudky řídí (list zadání) a hledá při jaké konfiguraci bude minimum pro hodnotu As. Je mi jasné, že nikdo není bez pořádného rozboru makra a samotných posudku říct kde konkrétně je chyba. Spíš jestli někdo nema nápad jak ji odhalit. Při trasování makro dopadne vždy dobře.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 60.0

Chybám se má především předcházet důkladnou analýzou problému a návrhem vhodného algoritmu. Obávám se, že zde neproběhlo ani jedno. Tento typ chyb se prostým debugováním makra odhaluje velice těžko, musíš se právě vrátit ke kořenům a znovu projít logický návrh algoritmu (anebo ho konečně vytvořit).K čemu mi bude detailní rozbor a trasování makra, když nevím řadu věcí? Třeba:- "v listu "Výsledky" jsou uložené vybrané hodnoty... " - v jakých buňkách? Je to text? Nebo číslo? Nebo více čísel? Jakých?- "... které potřebuji posoudit ..." - jak? Nějakým výpočtem? Porovnáním s něčím? A s čím?- "... vypsat jak posudek dopadl" - Jak ten posudek vypadá? Číslo? Více čísel? Text? - "Samotné posudky se provádějí v ostatních listech" - automaticky nebo to někdo dělá ručně? Vzorcem? Přenáší se výsledek posudku na ten výsledkový list?- "makro dosazuje různé konfigurace hodnot, kterými se posudky řídí (list zadání)" - takže výsledek posudku(ů) závisí na kombinaci těchto vstupů? Kolik jich je? Jaké mohou být? - "hledá při jaké konfiguraci bude minimum pro hodnotu As" - jak je definována ta hodnota "As"? Procházíš všechny kombinace vstupních hodnot? Je to nutné? Není možné najít minimum analyticky?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 71.0.3578.98

and a or je základ. A fakt bys mohl trochu popsat co to má dělat. Třeba bys mohl ten kód okomentovat, ke každé části kódu napsat komentář co by to mělo dělat, co jsi tím zamýšlel...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 71.0.3578.98

A dát na ten pastebin, tam zvolit syntaxi VBA, pak se ten kód barevně zvýrazní a výrazně se to zpřehlední. Kdo má tohle luštit?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Android AppleMAC-Safari 5.0

Ty komentáře napíšu a pošlu to. Zatím jsem si přepsal kód tak, aby mi do listu mimo vypsal postupně všechny hodnoty se kterými pracuje. Stalo se, že v buňce byla uložena hodnota 0,96 a makro vyhodnotilo že hodnota této buňky je větší nebo rovná 1. Hodnota v této buňce se v rámci cyklu mění a pohybuje se okolo 0,5 až 10 a já potřebuju vyřadit všechny případy kde vyjde menší jak 0. Při druhotném spuštění vyhodnotil vše správně. Vstupní údaje byly stejně.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Chrome 49.0.2623.112

Není třeba to psát do datových listů. Ve VBA je funkce Debug.print, která vypisuje věci do logu např. na řádce 105 stačí dát Debug.print "Ri je " & cstr(Ri). Log je vidět CTRL+G nebo View>Immediate window. Jinak "Hodnota v této buňce se v rámci cyklu mění" určitě by bylo dobrý se tomu vyhnout, pokud tam není třeba následné zpracování excel funkcí kterou nelze přepsat do makra

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 60.0

"... v buňce byla uložena hodnota 0,96 a makro vyhodnotilo že hodnota této buňky je větší nebo rovná 1"Pravděpodobně si měníš hodnoty buněk nebo proměnných, které porovnáváš "pod rukama" - vidíš něco jiného, než opravdu porovnáváš. Není prostě možné, aby podmínka "0,96 >= 1" byla vyhodnocena jako pravdivá!V praxi tak vidíš důsledek zřejmě neprovedené analýzy a návrhu algoritmu, jak už jsem napsal výše...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 71.0.3578.98

Makro jsem sice nezkoumal, ale z mojí osobní zkušenosti velmi dlouhá makra (která běží třeba několik hodin) Excel nemá rád. Setkal jsem se s tím, že makro dokázalo poškodit soubor tak, že už nešel otevřít, případně že makro zhavarovalo, přitom při pokračování krokováním žádnou chybu nehlásilo. Makra v Excelu prostě nejsou určena pro úlohy, které patří do nástrojů jako Visual Studio.Podotýkám, že programovat umím obstojně (a to nejen ve VBA) a že tyto problémy se projevovaly i u čistě napsaných kódů.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Výsledek, Zadání, Pastebin, Špatný výsledek, Celý soubor




Určitě si přečtěte

Co udělat s novým počítačem s Windows, než ho začnete používat

Co udělat s novým počítačem s Windows, než ho začnete používat

** Čerstvě zakoupený počítač je vhodné trochu připravit ** Věnujte pozornost instalaci a předinstalovaným aplikacím ** Zamyslete se nad zálohou a antivirem

David Polesný | 83

Řidiče Tesly ukolébal autopilot, policisté ho zastavili až po 11 kilometrech

Řidiče Tesly ukolébal autopilot, policisté ho zastavili až po 11 kilometrech

** Policisty poblíž San Franciska zaujala Tesla se spícím řidičem ** Donutili vozidlo zpomalit a následně probudili překvapeného řidiče ** Vozidlo podle dostupných informací jelo v režimu autopilota

Karel Kilián | 70

Apple ukázal novinky: iPad Pro má překonat notebooky a vrací se Mac mini!

Apple ukázal novinky: iPad Pro má překonat notebooky a vrací se Mac mini!

** Apple v New Yorku představoval počítačové novinky ** iPad Pro prý zatočí s notebooky ** Dočkali jsme se také návratu Mac mini

Jakub Čížek | 81

Vybrali jsme 16 programovatelných hraček a stavebnic pro děti. A vlastně i pro vás

Vybrali jsme 16 programovatelných hraček a stavebnic pro děti. A vlastně i pro vás

** Získejte děti pro matematiku a základy techniky ** Kupte jim hračku nebo stavebnici, které vdechnou vlastní život ** Vybrali jsme 16 stavebnic pro nejmenší caparty i vás samotné

Jakub Čížek | 16

Šmírování na Street View: Koukněte se, co zachytily kamery Googlu

Šmírování na Street View: Koukněte se, co zachytily kamery Googlu

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 45