Příspěvky uživatele


< návrat zpět

Tak už to funguje. Každopádně dík všem, kdo jste mi pomohli "nekonečný cyklus" přerušit. 5

Pro eLCHa : zkoušel jsem ten kód, ale laicky si stále myslím, že DoEvents prostě zareaguje na událost - stisknutí třeba mezerníku - a ukončí makro. Ten Váš kód proběhne, pokud se to nedostane do té části, kde je DoEvents (v závislosti na bEnd), tj. doběhne ten dlouhý cyklus.
Odborně Definice DoEvents od Microsoftu
"Funkce DoEvents vzdá spuštění makra tak, aby operační systém mohl zpracovávat další události. Funkce DoEvents předá řízení aplikací v operačním systému".
http://support.microsoft.com/kb/118468/cs

Dobře, prosím o pochopení, že tady odpovídám na dva názory. Takže konkrétně: s uživatelem marjankaj vedu debatu o "keypressed", z mého pohledu o ničem-uznal jsem, že to slovo je blbost a doufám, že tím to končí.
S uživatelem eLCHa vedu konkrétní debatu o mém problému, za což mu děkuji. Pokud se kódu týká, je to opravdu jen :
-------
Do
DoEvents
Call XXX - procedura pro načtení dat z karty
Loop
MsgBox(.....sem už to nikdy nedojde)
End Sub
---------
Na stisknutí klávesy- třeba mezera - se cyklus opravdu ukončí, ale bohužel s tím celé makro, takže na ten MsgBox prostě nedojde. to je celý problém - ukončit korektně cyklus stiskem klávesy

Co na to říct ? Omlouvám se stokrát za NEVHODNÉ, NEEXISTUJÍCÍ slovo keypressed. Sypu si popel na hlavu, jsem totální číňan, motám všechno dohromady. STAČÍ?
Chtěl jsem POUZE poradit, jak vyskočit z cyklu stiskem libovolné klávesy a ne tady vést nekonečnou, nesmyslnou debatu o slovu keypressed.

keypressed - to mám ještě z Pascalu "if keypressed then..." = když se stiskne libovolná klávesa tak.... - to není žádná proměnná, ale klíčové slovo pro událost VBA - je pravda, že v tom mém cyklu to nefunguje, protže DoEvents to spolejhlivě shodí celé, to je pozůstatek, co jsem různě zkoušel.
Tam jde ještě o to, že na obrazovce EXCELU mám schéma, které průbežně při té smyčce reaguje - analogové hodnoty se zobrazují (napětí, proudy), počítají se výkony atd. a dle digitálních se mění stavy vypínačů. Tzn., že celé to schema dynamicky během toho cyklu reaguje a když tam na stole "doštelují" hodnoty a právě stisknou "hotovo", tak chci aby se to celé zastavilo a z těch hodnot se potom vytiskne měřící protokol. ten váš algoritmus prohlédnu a vyzkouším.

Princip :Načítá to analogové a digitální hodnoty z měřícího stolu přes kartu. Uživatel pracuje s tím stolem a když jsou na něm hodnoty nastavené, měl by načítání zastavit stisknutím libovolné klávesy - tím přerušit ten nekonečný cyklus načítání a hodnoty se dále zpracují.
Potřebuji prostě stiskem libovolné (nebo konkrétní) klávesy přerušit cyklus Do..Loop
(doEvents to udělá, ale vrátí se to do editace buňky, což se mi nehodí, protože se musí vlastně nějakou klávesou přerušit a pak ještě stisknout další klávesu, což je uživatelsky "nic moc")

Tlačítkem spouštím makro - nekonečný cyklus Do..Loop, který načítá neustále hodnoty z technologické karty. Potřebuji stiskem klávesy cyklus přerušit a pokračovat za Loop. Dal jsem tam DoEvents, ale to ukončí celé makro, dál už nepokračuje a ještě k tomu skočí zpět do EXCELU do editace buňky(tzn. nabídky v liště šedivé) a čeká na zápis do buňky.
Jde to přerušit nějak jinak?
Nebo aspoň, aby se to vrátilo "normálně" do EXCELU bez nutnosti potvrdit?
---
Do
DoEvents
If Keypressed then Exit Do
Call XXX
Loop
MsgBox(.....sem už to nikdy nedojde)
End Sub


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