Stránka 1 z 1

Spuštění makra pouze jednou

Napsal: 26 lis 2020 08:58
od luko02420
Dobrý den, potřeboval bych poradit s makrem.
Jde udělat aby se mi při otevření sešitu, po kliknutí na tlačítko, makro spustilo pouze jednou?
Po uložení a znovu otevření sešitu zase pouze jednou?
Děkuji za pomoc.

Re: Spuštění makra pouze jednou

Napsal: 26 lis 2020 10:41
od atari
Do Excelu vložíš jakýkoliv objekt (to bude to tlačítko), a přes pravé tlačítko myši mu přiřadíš makro.

A potom když na to tlačítko klikneš, tak se makro jednou spustí.

Re: Spuštění makra pouze jednou

Napsal: 26 lis 2020 10:56
od mmmartin
A když na to tlačítko klikne podruhé?

Re: Spuštění makra pouze jednou

Napsal: 26 lis 2020 11:04
od ITCrowd
Netuším, jestli to nelze jinak. Ale šlo by to možná takto:
- jednu buňku rezervovat pro kontrolní proměnnou
- při spuštění si makro zkontroluje buňku, když je prázdná, uloží hodnotu do buňky
- takže při dalším spuštění už v buňce hodnota je, tedy se makro neprovede.

A dodat makro, které se bude spouštět při ukládání souboru a bude mazat tu buňku...

Nebo makro může smazat ten objekt, kterým se spouští a při uložení ho zase doplní.

Re: Spuštění makra pouze jednou

Napsal: 26 lis 2020 11:16
od luko02420
ITCrowd píše:Netuším, jestli to nelze jinak. Ale šlo by to možná takto:
- jednu buňku rezervovat pro kontrolní proměnnou
- při spuštění si makro zkontroluje buňku, když je prázdná, uloží hodnotu do buňky
- takže při dalším spuštění už v buňce hodnota je, tedy se makro neprovede.

A dodat makro, které se bude spouštět při ukládání souboru a bude mazat tu buňku...

Nebo makro může smazat ten objekt, kterým se spouští a při uložení ho zase doplní.


Děkuji za inspiraci, hned jdu na to.

Re: Spuštění makra pouze jednou

Napsal: 26 lis 2020 11:47
od Grimm
Můžeš použít globální proměnou, která si zachovává platnost do uzavření souboru.

Re: Spuštění makra pouze jednou

Napsal: 26 lis 2020 11:48
od atari
Aha, takhle jsem ten dotaz nepochopil.

Já bych to udělal jinak (abych to nemusel řešit přes buňku) jak navrhuje Grimm:

Tímto makrem do proměnné "povolit" zadám pravdu, to mě udělá Excel automaticky při otevření sešitu:
( https://office.lasakovi.com/excel/vba-p ... i-skriptu/ )

Kód: Vybrat vše

Private Sub Workbook_Open()
povolit = True
End Sub


A ve vlastním makru se příkaz vykoná jen pokud je hodnota "true" a pak se nastaví "falze", a tím je zajištěno, že se makro spustí jen při prvním stisknutí tlačítka:

Kód: Vybrat vše

Sub luko02420()
If povolit Then 'moje makro
povolit = falze
End Sub

Re: Spuštění makra pouze jednou

Napsal: 26 lis 2020 12:33
od Grimm
Tak já to pochopil ještě trochu jinak než Atari, tedy bez automatického spuštění.
Kód se má spustit tlačítkem, ale pouze jednou, pokud dojde k uzavření sešitu kód bude možné znovu tlačítkem spustit viz soubor

Re: Spuštění makra pouze jednou

Napsal: 26 lis 2020 12:46
od atari
Ano, přesně tuto funkcionalitu jsem navrhoval. Jenže Grimm to udělal inteligentněji (a hlavně jednodušeji), než já. :thumbup:

Re: Spuštění makra pouze jednou  Vyřešeno

Napsal: 26 lis 2020 13:32
od luko02420
Děkuji všem za pomoc.
Nakonec budu muset použít radu jak píše ITCrowd, protože rada od Grimma byť je vynikající se mi bije s jiným makrem, které používám na automatickou zálohu při uzavření sešitu.
Pomoc od Grimma uchovám pro pozdější využití.
Ještě jednou děkuji