Makro v Excelu funguje pouze v Debug modu Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Luboš
Tvůrce článků
Level 5
Level 5
Příspěvky: 2038
Registrován: květen 05
Pohlaví: Muž
Stav:
Offline

Makro v Excelu funguje pouze v Debug modu

Příspěvekod Luboš » 21 pro 2009 19:56

Zdravím všechny ochotné lidi, kteří mi mohou pomoct. Napsal jsem makro v VBA pro Excel 2003, které něco vypočítáva (řádově asi 3 sekundy) a na konci má toto makro zobrazit zprávu o ukončení výpočtu. V ladícím modu, když krokuji každý řádek makra, se toto okénko zobrazí a čeká na odkliknutí - přesně tak, jak to chci. Když však makro spustím přes asociované tlačítko, tak výpočet sice proběhne (zobrazí se změněné hodnoty po výpočtu), ale ukončující dialog ne. Nevíte proč? Na tomto fóru jsem odpověď nemohl najít. Děkuji za smysluplné odpovědi.

Konec makra je následující:

...
Text1 = "Výpočet ukončen"
Text2 = "Zpráva"

Response = MsgBox(Text1, 0, Text2)
Potřebujete jinou pomoc při řešení problému ve Windows 10? Stáhněte si soubor Win10-finty.

Reklama
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Makro v Excelu funguje pouze v Debug modu

Příspěvekod navstevnik » 21 pro 2009 21:39

Pricinou muze byt to, ze v bufferu klavesnice je ulozen stisk klavesy Enter (mezernik) v dobe, nez je zobrazena zprava o ukonceni vypoctu. Zobrazena zprava ocekava stisk klavesy (enter, mezernik), a protoze v buferu klavesnice je tento znak ulozen, precte a zpravu ukonci. Overit to muzes vlozenim radku kodu s dalsi zpravou a v dobe pozastaveni behu kodu stiskni mezernik, zobrazi se az druha zprava:

Kód: Vybrat vše

Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Sub aa()
  Text1 = "Vypocet ukoncen"
  Text2 = "Zpráva"
  ' v dobe pozastaveni behu makra stiskni mezernik
  Sleep 1000
  response = MsgBox(Text1, 0, Text2)
  response = MsgBox("Druha zprava")
End Sub

Neni nekde v behu kodu pouzit prikaz SendKeys "~" ? Ukazka:

Kód: Vybrat vše

Sub aa()
  Text1 = "Vypocet ukoncen"
  Text2 = "Zpráva"
  SendKeys "~" ' Enter
'  SendKeys "~" ' Enter
  response = MsgBox(Text1, 0, Text2)
  response = MsgBox("Druha zprava")
End Sub

Pokud bude zaktivovan i druhy prikaz SendKeys "~", tak se nezobrazi ani druha zprava.
Samozrejme pricina muze byt i jinde, ale vice informaci jsi neposkytl.

Luboš
Tvůrce článků
Level 5
Level 5
Příspěvky: 2038
Registrován: květen 05
Pohlaví: Muž
Stav:
Offline

Re: Makro v Excelu funguje pouze v Debug modu  Vyřešeno

Příspěvekod Luboš » 22 pro 2009 09:20

Bohužel, nezabralo ani Sleep ani Application.Wait, ale problém jsem vyřešil úplně náhodou. V hlavním chodu jsem totiž vyvolal proceduru pro výpočet příkazem Call a až po něm jsem uvedl příkaz pro zobrazení zprávy - tato varianta však nefungovala, jak jsem uvedl. Zkusil jsem přesunout příkaz Msg z hlavního chodu na konec procedury pro výpočet a ejhle - všechno funguje. Akorát mi uniká logika tohoto problému.
Takže shrnuto:

1. původní varianta:

Sub Main()
...
Call Vypocet()
Response Msg("Výpočet ukončen",0,"Zpráva")
End Sub

Sub Vypocet()
...
End Sub

2. opravená varianta:

Sub Main()
...
Call Vypocet()
End Sub

Sub Vypocet()
...
Response Msg("Výpočet ukončen",0,"Zpráva")
End Sub

Děkuji za ochotu
Potřebujete jinou pomoc při řešení problému ve Windows 10? Stáhněte si soubor Win10-finty.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Fičura v Excelu Příloha(y)
    od Rosta_Kolmix » 27 čer 2024 17:12 » v Kancelářské balíky
    1
    3327
    od Grimm Zobrazit poslední příspěvek
    28 čer 2024 23:30
  • ComboBox v Excelu kopírování Příloha(y)
    od LukM » 19 říj 2024 14:03 » v Kancelářské balíky
    0
    2642
    od LukM Zobrazit poslední příspěvek
    19 říj 2024 14:03
  • automaticke nastaveni velikosti komentare v Excelu
    od Mikik Block » 04 zář 2024 15:17 » v Kancelářské balíky
    0
    3180
    od Mikik Block Zobrazit poslední příspěvek
    04 zář 2024 15:17
  • League of Legends - vysoké ms pouze u her od riotu Příloha(y)
    od 4Lift » 04 úno 2025 21:41 » v Hry
    6
    4650
    od 4Lift Zobrazit poslední příspěvek
    10 úno 2025 21:09
  • Náhodné zamrznutí PC, řešením je pouze tvrdý restart.
    od Sipsisipi » 21 srp 2024 19:12 » v Problémy s hardwarem
    10
    4318
    od Sipsisipi Zobrazit poslední příspěvek
    25 srp 2024 10:37

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 12 hostů