Note: The other languages of the website are Google-translated. Back to English

Jak spustit nebo spustit makro kliknutím na konkrétní buňku v aplikaci Excel?

Při práci s Microsoft Excel možná víte, jak spustit určité Makro pomocí příkazového tlačítka. Ale víte, jak spustit Makro pouhým kliknutím na konkrétní buňku v listu? Tento článek vám ukáže způsob spuštění makra kliknutím na konkrétní buňku podrobně.

Spusťte nebo spusťte makro kliknutím na konkrétní buňku s kódem VBA


Spusťte nebo spusťte makro kliknutím na konkrétní buňku s kódem VBA

Následující kód VBA vám pomůže spustit Makro kliknutím na konkrétní buňku v aplikaci Excel. Postupujte prosím následovně.

1. Na listu s buňkou musíte kliknout, abyste spustili Makro, klikněte pravým tlačítkem na kartu listu a poté klikněte Zobrazit kód z kontextové nabídky.

2. V Microsoft Visual Basic pro aplikace zkopírujte a vložte níže uvedený skript VBA do okna Kód.

Kód VBA: Spusťte nebo spusťte makro kliknutím na konkrétní buňku

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("D4")) Is Nothing Then
            Call MyMacro
        End If
    End If
End Sub

Poznámky:

1. V kódu je D4 buňka, na kterou klepnutím spustíte makro;

2. Nahraďte kódový název Moje makro s makrem, které spustíte v listu. Viz snímek obrazovky:

3. zmáčkni Další + Q současně zavřete Microsoft Visual Basic pro aplikace okno.

Od této chvíle se při kliknutí na buňku D4 v aktuálním listu okamžitě spustí zadané Makro.


Související články:


Nejlepší kancelářské nástroje produktivity

Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než 300 výkonných funkcí. Podporuje Office / Excel 2007-2021 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Plné funkce 30denní bezplatná zkušební verze. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50%a snižuje stovky kliknutí myší každý den!
officetab dno
Komentáře (37)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Spustit nebo spustit makro kliknutím na konkrétní buňku s kódem VBA, to nemohlo fungovat. Zkoušel jsem to mnoha různými způsoby, ale nikdy to nedosáhlo toho, co bylo slíbeno.
Tento komentář byl moderátorem webu minimalizován
Tento kód bude fungovat, pouze pokud jej umístíte do modulu „ThisWorkbook“. Nefunguje na obecném modulu.
název sešitu > Objekty Microsft Excel > Tento sešit.
Tento komentář byl moderátorem webu minimalizován
Tento kód bude fungovat na modulu kódu listu. Musíte kliknout pravým tlačítkem na záložku listu a kliknout na 'Zobrazit kód'. Tím se otevře modul kódu pouze pro tento list. Poté vložte zmíněný kód.
Tento komentář byl moderátorem webu minimalizován
Pokud chcete mít více maker, buňky s různými makry na stejné stránce – je to možné?
Tento komentář byl moderátorem webu minimalizován
milý Simone,
Níže uvedený skript VBA vám může pomoci spouštět různá makra kliknutím na buňky na stejné stránce.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Pokud Target.Count = 1 Pak
If Not Intersect(Target, Range("D4")) Is Nothing Then Call MyMacro1
If Not Intersect(Target, Range("D8")) Is Nothing Then Call MyMacro2
If Not Intersect(Target, Range("D10")) Is Nothing Then Call MyMacro3
End If
End Sub

Přidejte prosím řádek "If Not Intersect(Target, Range("D10")) Is Nothing Then Call MyMacro" pro spuštění dalšího makra kliknutím na buňku. A změňte názvy buněk a maker v kódu na základě vašich potřeb.
Tento komentář byl moderátorem webu minimalizován
Na mém Excelu to nefunguje. Je kód správný?
Tento komentář byl moderátorem webu minimalizován
Ahoj Camilo,
Omluvám se za nepříjemnost. Vyzkoušejte níže uvedený kód VBA.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRgArr jako varianta
Dim xFunArr jako varianta
Dim xFNum jako celé číslo
Dim xStr jako řetězec
Dim xRg jako rozsah
xRgArr = Array("A1", "D1", "C1") 'Buňky používané ke spuštění makra
xFunArr = Array("Kódový název1", "Kódový název2", "Kódový název3") 'Odpovídající kódová jména
If Selection.Count = 1 Then
Pro xFNum = 0 až UBound(xRgArr)
Nastavit xRg = ActiveSheet.Range(xRgArr(xFNum))
If Not Intersect(Target, xRg) Is Nothing Then
xStr = xFunArr(xFNum)
Aplikace. Spusťte xStr
End If
další
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
To fungovalo perfektně a ušetří mi to spoustu času - děkuji za sdílení vašich znalostí - velmi si toho vážím!
Tento komentář byl moderátorem webu minimalizován
Jsem rád, že jsem mohl pomoci.
Tento komentář byl moderátorem webu minimalizován
Skvělý. Funguje dobře... Děkuji....
Tento komentář byl moderátorem webu minimalizován
Ahoj.

Funguje mi to dobře, ale chtěl bych přidat podmínku ke spuštění makra. Makro chci spustit pouze v případě, že buňka vedle buňky, do které kliknu, obsahuje určitou hodnotu.
např. Když kliknu na buňku F6, chci, aby se makro spustilo, pokud buňka E6 obsahuje "x", ale pokud je buňka E6 prázdná, makro se nesmí spustit.
Doufám, že to dává smysl.
Díky

zde je můj původní kód bez podmínky:


Možnost explicitní

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
If Selection.Count = 1 Then
If Not Intersect(Target, Range("F6:F18")) Is Nothing Then
Zavolejte datumVyberte
End If
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Následující kód VBA vám může pomoci vyřešit problém. Zkuste to prosím a děkuji za váš komentář.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg jako rozsah
If Not Intersect(Target, Range("F6:F18")) Is Nothing Then
Nastavit xRg = ActiveSheet.Cells(Target.Row, Target.Column - 1)
If (xRg.Value = "") Nebo (xRg.Value <> "X") Pak Exit Sub
Zavolejte datepick
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Díky, ale co sloučené buňky?
Tento komentář byl moderátorem webu minimalizován
Ahoj Albere,
Kód nefunguje pro sloučené buňky.
Tento komentář byl moderátorem webu minimalizován
Používám OpenOffice a kliknul jsem pravým tlačítkem na záložku listu a vybrané události a pak jsem vybral toto makro z MyMacros. Na následujícím řádku se však zobrazuje chyba: If Selection.Count = 1 Then >>> "Základní chyba běhu, proměnná není definována...
Tento komentář byl moderátorem webu minimalizován
Ahoj James,
Kód funguje pouze pro Microsoft Office Excel. Děkuji za váš komentář.
Tento komentář byl moderátorem webu minimalizován
Můj úplný kód v tomto makru je:


Private Sub Worksheet_SelectionChange (ByVal Target As Range)

Dim val As String
REM val = Rozsah("A2").Hodnota

If Selection.Count = 1 Then
If Not Intersect(Target, Range("D24")) is Nothing Then
REM volání MyMacro
val = Rozsah("D24").Hodnota
Rozsah("B27").Hodnota = val
End If
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Toto téma je velmi zajímavé a zajímá mě, ale nevím kde ho najít, naštěstí jste toto téma založili, doufám, že mi každý pomůže http://run-3.online
Tento komentář byl moderátorem webu minimalizován
Excel 2002 (XP): Pokud je sešit otevřen výběrem "Soubor" a stisknutím "Shift", deaktivuje se makra v tomto listu, problém je v tom, že pokud vyberu "Nástroje > Makro > Makra...", mohu spustit makro každopádně jak vyřešit?
Tento komentář byl moderátorem webu minimalizován
Ahoj Roger,
Kód jsme netestovali v Excelu 2002 (XP). Proč nepoužít novější verzi Microsoft Office? Bude to pro vás jednodušší.
Tento komentář byl moderátorem webu minimalizován
Stejný výsledek v roce 2010.
Tento komentář byl moderátorem webu minimalizován
Proč nepoužít nějakou novější verzi, bude to jednodušší
https://games.lol/racing/
Tento komentář byl moderátorem webu minimalizován
Díky, ale co takhle několik buněk pro kliknutí pro spuštění několika maker.
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Vyzkoušejte níže uvedený kód VBA.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRgArr jako varianta
Dim xFunArr jako varianta
Dim xFNum jako celé číslo
Dim xStr jako řetězec
Dim xRg jako rozsah
xRgArr = Array("A1", "D1", "C1") 'Buňky používané ke spuštění makra
xFunArr = Array("Kódový název1", "Kódový název2", "Kódový název3") 'Odpovídající kódová jména
If Selection.Count = 1 Then
Pro xFNum = 0 až UBound(xRgArr)
Nastavit xRg = ActiveSheet.Range(xRgArr(xFNum))
If Not Intersect(Target, xRg) Is Nothing Then
xStr = xFunArr(xFNum)
Aplikace. Spusťte xStr
End If
další
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Díky za tento kód. Je možné, aby to fungovalo kliknutím na buňku, která je sloučená s ostatními?
Tento komentář byl moderátorem webu minimalizován
Ahoj M.Symondsi,
Kód v tomto článku vám může pomoci: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Děkujeme za váš komentář.
Tento komentář byl moderátorem webu minimalizován
ahoj, snažil jsem se použít tento kód ke spuštění vložení makra, ale nemůžu přijít na to, jak makro správně vložit.

tady je můj původní Marco

Sub Paste()
'
' Vložit makro
'

'
Rozsah("B34").Vyberte
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False, NoHTMLFormatting:=True
End Sub


jakákoliv pomoc je ceněna
Tento komentář byl moderátorem webu minimalizován
Dobrý den, děkuji za zajímavé téma. Co když například chci kliknout na D4 v Listu1 a vidět výsledek Makra v Listu2!F3.
Tento komentář byl moderátorem webu minimalizován
Už to nefunguje.
Worksheet_SelectionChange ve výchozím nastavení neexistuje. To znamená, že to nemůžete použít ke spuštění makra.

Jediné vložené dílčí položky, které můžete použít, jsou uvedeny v rozevíracím seznamu "Sešit", takže...

Jediná nejbližší věc, kterou můžete udělat, je použít Workbook_SheetBeforeDoubleClick. Ale vstoupí do režimu úprav (stále to není velký problém).
Tento komentář byl moderátorem webu minimalizován
Ahoj CodeKiller.Worksheet_SelectionChange existuje pouze v editoru Sheet(Code). Klikněte pravým tlačítkem na záložku listu a kliknutím na Zobrazit kód aktivujte editor listu (kódu).
Tento komentář byl moderátorem webu minimalizován
Je důležité zdůraznit, že makro se spouští pouze v listu.
Ti z nás, kteří používají běžný vizuální základní editor, často skončí ukládáním maker jinde než v aktuálním listu.
Žádný z těchto kódů nebude v takové situaci fungovat.
Tento kód považuji za mnohem jednodušší a funguje mi velmi dobře: 

Private Sub Worksheet_SelectionChange (ByVal Target As Excel. Range)
If Not Intersect(Range("d1"), Target) Is Nothing Then
Zavolejte aa
End If
End Sub
Sub aa() ' vložte svůj kód sem
Rozsah("D1").Vyberte
Selection.Copy
Rozsah("F1").Vyberte
ActiveSheet.PasteEnd Sub
John Wells
jnw.wells@gmail.com
Tento komentář byl moderátorem webu minimalizován
Ahoj Johne Wellsi, děkujeme za sdílení.
Tento komentář byl moderátorem webu minimalizován
Pro ty, kteří chtějí, aby to fungovalo pro sloučené buňky, je nejrychlejší a nejšpinavější způsob aktualizace řádku 2 následovně:
Možnost Explicitní

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Pokud Selection.Count > 0 Pak
If Not Intersect(Target, Range("D4")) is Nothing Then
Zavolejte MyMacro
End If
End If
End SubSelection.Count se používá k určení, zda byl proveden výběr před provedením zbývajícího makra. Pokud se váš výběr skládá ze čtyř buněk, které byly sloučeny, Selection.Count se bude rovnat 4 a zbývající kód se nikdy nespustí. Můžete také změnit řádek 2 na přesný počet buněk, které byly sloučeny, ale to způsobí problémy, pokud sloučit další buňky.
Tento komentář byl moderátorem webu minimalizován
Grandioso! Grazie, era una vita che sognavo di poterlo fare, se può essere utile a qualcuno avendo necessità di eseguire più codici su più celle per
aumentare il numero di opzioni basta aggiungere le nuove istruzionisempre sotto la stessa možnost explicitní altrimente ci viene detto che il riferimento al
pracovní list non è univoco. Mi spiego meglio evidentemente su come ho adattato il codice con il mio esempio;

Možnost explicitní
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
If Selection.Count = 1 Then
If Not Intersect(Target, Range("Y64")) je Nothing Then
Rozsah("Y65:Y78").Vyberte
Rozsah("Y65").Aktivovat
Selection.ClearContents
Rozsah("Y65").Vyberte
End If
If Not Intersect(Target, Range("A33")) Is Nothing Then
Rozsah("A33").Vyberte
Selection.Copy
ActiveWindow.WindowState = xlMinimized
SendKeys "^v"
SendKeys "{BACKSPACE}"
End If
End If
End Sub

Grazie ancora è stata un'autentica meraviglia!

Massimo
Tento komentář byl moderátorem webu minimalizován
Neměl jsem od toho titulu žádná očekávání, ale o to víc jsem byl ohromen. Autor odvedl skvělou práci. Strávil jsem několik minut čtením a ověřováním faktů. Všechno je velmi jasné a srozumitelné. Mám rád příspěvky, které vyplňují vaše mezery ve znalostech. Tenhle je svého druhu.
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

Není potřeba žádný hacer. Espero de veras que me podáis ayudar.
Necesito que se lance una MACRO al hacer clic en una celda, pero no sé en qué celda va a ser, no lo puedo comparar con (si se ha seleccionado la celda A3, por ejemplo, que se lance la acción) porque del funcionalidades fichero, las celdas se van a mover de sitio (se han podido insertar, mas o menos filas encima). Necesitaría poder saber qué celda es la que se ha seleccionado.
Hay alguna manera de poder hacer eso?
Děkuji moc předem.
Tento komentář byl moderátorem webu minimalizován
Ahoj Hola,
Adresa buňky je konstantní. Jediné, co můžete přesunout, je hodnota buňky.
Buňka, kterou jste zadali v kódu VBA, je stále buňkou, která spouští zadaný kód VBA.
Zatím zde nejsou žádné komentáře
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění

Sociální sítě

Copyright © 2009 - www.extendoffice.com. | Všechna práva vyhrazena. Poháněno ExtendOffice. | |. | Sitemap
Microsoft a logo Office jsou ochranné známky nebo registrované ochranné známky společnosti Microsoft Corporation ve Spojených státech a / nebo jiných zemích.
Chráněno Sectigo SSL