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

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

Moderátor: Mods_senior

luko02420
Level 2
Level 2
Příspěvky: 203
Registrován: únor 12
Pohlaví: Nespecifikováno
Stav:
Offline

Spuštění makra pouze jednou

Příspěvekod luko02420 » 26 lis 2020 08:58

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.

Reklama
Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3195
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: Spuštění makra pouze jednou

Příspěvekod atari » 26 lis 2020 10:41

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í.

Uživatelský avatar
mmmartin
Moderátor
Master Level 9.5
Master Level 9.5
Příspěvky: 9497
Registrován: srpen 04
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline

Re: Spuštění makra pouze jednou

Příspěvekod mmmartin » 26 lis 2020 10:56

A když na to tlačítko klikne podruhé?
ASUS Prime Z390-P / Hexa Core Intel core i5 Coffee Lake-S / Gigabyte GeForce GTX 650 Ti / FORTRON BlueStorm Bronze 80PLUS / W 11

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23591
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Spuštění makra pouze jednou

Příspěvekod ITCrowd » 26 lis 2020 11:04

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í.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

luko02420
Level 2
Level 2
Příspěvky: 203
Registrován: únor 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Spuštění makra pouze jednou

Příspěvekod luko02420 » 26 lis 2020 11:16

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.

Uživatelský avatar
Grimm
Level 2
Level 2
Příspěvky: 162
Registrován: září 17
Pohlaví: Muž
Stav:
Offline

Re: Spuštění makra pouze jednou

Příspěvekod Grimm » 26 lis 2020 11:47

Můžeš použít globální proměnou, která si zachovává platnost do uzavření souboru.

Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3195
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: Spuštění makra pouze jednou

Příspěvekod atari » 26 lis 2020 11:48

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

Uživatelský avatar
Grimm
Level 2
Level 2
Příspěvky: 162
Registrován: září 17
Pohlaví: Muž
Stav:
Offline

Re: Spuštění makra pouze jednou

Příspěvekod Grimm » 26 lis 2020 12:33

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
Přílohy
Bylo jiz spusteno.xlsm
(12.93 KiB) Staženo 40 x

Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3195
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: Spuštění makra pouze jednou

Příspěvekod atari » 26 lis 2020 12:46

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

luko02420
Level 2
Level 2
Příspěvky: 203
Registrován: únor 12
Pohlaví: Nespecifikováno
Stav:
Offline

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

Příspěvekod luko02420 » 26 lis 2020 13:32

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


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • excel-posun makra
    od actionboy » 12 bře 2024 18:59 » v Kancelářské balíky
    1
    262
    od Grimm Zobrazit poslední příspěvek
    12 bře 2024 21:43
  • USB-C pouze data ? Příloha(y)
    od ski1961 » 08 říj 2023 10:25 » v Rady s výběrem hw a sestavením PC
    4
    2145
    od ski1961 Zobrazit poslední příspěvek
    08 říj 2023 11:40
  • Záloha pouze změněných dat Příloha(y)
    od BulletRide » 29 úno 2024 01:14 » v Programy ke stažení
    3
    1389
    od meda2016 Zobrazit poslední příspěvek
    03 bře 2024 10:34
  • Pád PC po spuštění hry be BSOD
    od Radoozek » 07 pro 2023 15:00 » v Problémy s hardwarem
    4
    1344
    od Radoozek Zobrazit poslední příspěvek
    08 pro 2023 16:45
  • Artefakty na monitoru po spuštění
    od WinDroid » 30 čer 2023 15:47 » v Problémy s hardwarem
    2
    753
    od Mr. Incognito Zobrazit poslední příspěvek
    30 čer 2023 19:04

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

Kdo je online

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