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

Jak spustit makro při změně hodnoty buňky v aplikaci Excel?

Normálně v aplikaci Excel můžeme stisknutím klávesy F5 nebo tlačítka Spustit spustit kód VBA. Zkusili jste ale někdy spustit konkrétní kód makra, když se změní hodnota buňky? V tomto článku představím několik rychlých triků, jak zvládnout tuto práci v aplikaci Excel.

Spustit nebo zavolat makro, když se konkrétní hodnota buňky změní s kódem VBA

Spustit nebo zavolat makro, když se změní libovolná hodnota buňky v rozsahu s kódem VBA


šipka modrá pravá bublina Spustit nebo zavolat makro, když se konkrétní hodnota buňky změní s kódem VBA

Chcete-li spustit kód makra změnou hodnoty buňky, následující kód VBA vám může udělat laskavost, udělejte to takto:

1. Klikněte pravým tlačítkem na kartu listu, kterou chcete spustit, pokud se změní hodnota buňky, a poté vyberte Zobrazit kód z kontextového menu a v otevřeném Microsoft Visual Basic pro aplikace okno, zkopírujte a vložte následující kód do prázdného modulu:

Kód VBA: Spustit makro při změně hodnoty buňky:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro
    End If
End Sub

doc spustit makro, pokud se buňky změní 1

Poznámka: Ve výše uvedeném kódu, A1 je konkrétní buňka, na které chcete spustit kód, Mymakro je název makra, které chcete spustit. Změňte je prosím podle svých potřeb.

2. A poté uložte a zavřete okno s kódem, nyní, když zadáte nebo změníte hodnotu v buňce A1, konkrétní kód se spustí najednou.


šipka modrá pravá bublina Spustit nebo zavolat makro, když se změní libovolná hodnota buňky v rozsahu s kódem VBA

Pokud chcete spustit nebo aktivovat makro při změně hodnoty buňky v rozsahu buňky, může vám pomoci následující kód.

1. Klikněte pravým tlačítkem na kartu listu, kterou chcete spustit, pokud se změní hodnota buňky, a poté vyberte Zobrazit kód z kontextového menu a v otevřeném Microsoft Visual Basic pro aplikace okno, zkopírujte a vložte následující kód do prázdného modulu:

Kód VBA: Spustit makro, když se hodnota kterékoli buňky změní v rozsahu:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

doc spustit makro, pokud se buňky změní 2

Poznámka: Ve výše uvedeném kódu, A1: B100 jsou konkrétní buňky, na kterých chcete spustit kód, Mymakro je název makra, které chcete spustit. Změňte je prosím podle svých potřeb.

2. A poté uložte a zavřete okno s kódem, nyní, když zadáte nebo změníte hodnotu v kterékoli buňce A1: B100, konkrétní kód se provede najednou.


Odeberte všechna makra z více sešitů

Kutools pro Excel's Dávkové odebrání všech maker nástroj vám pomůže odstranit všechna makra z více sešitů, jak potřebujete. Stáhněte si nyní bezplatnou zkušební verzi Kutools pro Excel!

Kutools pro Excel: s více než 300 praktickými doplňky aplikace Excel, můžete vyzkoušet bez omezení do 30 dnů. Stáhněte si a vyzkoušejte zdarma hned teď!


Související články:

Jak spustit makro automaticky před tiskem v aplikaci Excel?

Jak spustit makro na základě hodnoty buňky v aplikaci Excel?

Jak spustit makro na základě hodnoty vybrané z rozevíracího seznamu v aplikaci Excel?

Jak spustit makro kliknutím na hypertextové odkazy v aplikaci Excel?

Jak spustit makro při výběru listu ze sešitu?


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-2019 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Kompletní 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 omezuje stovky kliknutí myší každý den!
officetab dno
Komentáře (17)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Tento modul mi nefunguje. Říká, že když se změní VALUE buňky, spustí kód. Zjistil jsem, že když zadávám do buňky, funguje to, ale pokud se hodnota buňky změní vzorcem, například Counta, pak se neprovede. Máte řešení, jak spustit makro, když se HODNOTA změní pomocí vzorce? Díky, Wayne
Tento komentář byl moderátorem webu minimalizován
Stejný problém jako Wayne. Jakákoli pomoc velmi oceňována! Díky Ronnie
Tento komentář byl moderátorem webu minimalizován
Ahoj hoši,

Ano, výše uvedený kód je k dispozici pouze v případě, že se hodnota buňky změní ručně, pokud potřebujete spustit konkrétní kód makra automaticky, když se změní výsledek vzorce a jeho relativní buňky, navštivte tento článek:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Zkuste to prosím a doufejte ve vaši odpověď.
Tento komentář byl moderátorem webu minimalizován
Nefunguje to... & ručně měním hodnotu buňky. Existuje nějaká předkonfigurace, kterou je třeba nastavit?
Tento komentář byl moderátorem webu minimalizován
Vyzkoušejte to v postupu a použijte jako parametr


Private Sub Worksheet_Change (ByVal Target As Range)

MsgBox Target.Address & "-" e Target.AddressLocal

End Sub
Tento komentář byl moderátorem webu minimalizován
Jo, popis říká, že by se to mělo spustit, když se změní hodnota, ale druhý kód říká, že je to, když hodnota není nic, a první se také nespustí, když se hodnota změní, ale když při pohledu na kód stisknu F5, chce to spouštět MyMacro, ale nezdá se, že by reagovalo na změny hodnot tak moc, jako spíše přechod od ničeho k něčemu nebo naopak.
Tento komentář byl moderátorem webu minimalizován
Toto fungovalo poprvé pro mě pomocí seznamu ověření dat, který zobrazuje text na základě výběru seznamu.
Tento komentář byl moderátorem webu minimalizován
Fungovalo to pro mě skvěle! Moje dilema je, že chci, aby to bylo relativní referenční makro, a existuje rozdíl mezi stisknutím klávesy Enter pro uložení položky a smazáním pro vymazání buňky.
Tento komentář byl moderátorem webu minimalizován
Hej, užitečný kód. Přemýšlel jsem, jestli by bylo možné vložit kroužek kolem buněk, které se mění tak, jak se mění? A resetovat kruhy každé pondělí?
Tento komentář byl moderátorem webu minimalizován
Ahoj Kevine,
Zde není žádný nápad na řešení vašeho problému, pokud máte nějaké dobré řešení, napište sem.
Tento komentář byl moderátorem webu minimalizován
Makro, které voláte, kde to máte? Mám svůj ve složce Moduly, ale když vložím jakoukoli hodnotu do libovolné buňky listu, zobrazí se chyba kompilace, která říká:
Očekávaná proměnná nebo procedura, nikoli modul.

Prosím, pomozte.
Tento komentář byl moderátorem webu minimalizován
Dobrý den, DrCartwright,
Omlouvám se, že odpovídám tak pozdě.
Ano, jak jste řekl, kód makra by měl být umístěn v modulu a musíte změnit kódové jméno na své vlastní jméno, jak je znázorněno na následujícím obrázku:
Tento komentář byl moderátorem webu minimalizován
Ahoj dobré odpoledne
quisiera saber el codigo para que se active una macro cuando cambia el valor de una celda de una columna, pero este valor cambia por formula,sin que el usuario introduzca ningun valor.
Tento komentář byl moderátorem webu minimalizován
Ahoj lidi, řeším následující problém: Chci seškrábat název webu, když je odkaz vložen do sloupce A a tuto hodnotu vložit do příslušné buňky (vedle ní) ve sloupci B. Problém se zdá být v tom, že jakmile vložím web ve sloupci A, kód znovu spustí celý seznam od sloupce A2 po „poslední řádek“, jak je definováno v kódu. Existuje nějaký způsob, jak upravit pouze sloupec B, jakmile je upraven jeden sloupec A? Tj. pokud vložím odkaz do sloupce A36, získám název ve sloupci B36, bez ohledu na to, zda je buňka uprostřed použitého rozsahu nebo úplně dole. Rád bych to použil, aniž bych musel znovu spouštět více vstupů, jak je to v současné době; (tj. smyčka "pro i = 2 do posledního řádku")? Také bych rád změnil níže uvedené z modulárního makra, tj. sub na soukromé sub reagující na změnu (tj. protínající funkci), kde „cíl“ je jakákoli buňka z rozsahu A: A. Mnohokrát děkuji!


Sub get_title_header()



Dim wb jako objekt

Ztlumit dokument jako objekt

Dim sURL jako řetězec

Dim lastrow As Long

lastrow = List1.Cells(Rows.Count, "A").End(xlUp).row



Pro i = 2 Do posledního řádku

Nastavit wb = CreateObject("internetExplorer.Application")

sURL = buňky (i, 1)



wb.navigate sURL

wb.Visible = False



Zatímco wb.Busy

DoEvents

platit



''HTML dokument

Nastavit doc = wb.document



Buňky(i, 2) = doc.Titul



Při chybě Přejít na err_clear

Cells(i, 3) = doc.GetElementsByTagName("h1")(0).innerText

err_clear:

Pokud Err <> 0 Pak

Err.Clear

Pokračujte dál

End If

wb.Ukončit

Rozsah(Cells(i, 1), Cells(i, 3)).Sloupce.AutoFit

Příště já



End Sub




Děkuji!
Tento komentář byl moderátorem webu minimalizován
Snažím se automatizovat 1 sešit (BOM), když jiný sešit (Stav dílů) provádí změny. Stavový soubor dílů se aktualizuje každých 15 minut. Potřebuji vědět, jak automatizovat konkrétní sloupec, když dojde k těmto změnám? Nějaké nápady
Tento komentář byl moderátorem webu minimalizován
Níže uvedený kód používám ke skrytí různých sloupců v závislosti na výběru z rozevíracího pole umístěného v buňce C3, ale po provedení výpočtu kdekoli v listu se VŠECHNY sloupce stanou NESKRYTÉ. Jak to napravím?

Soukromá dílčí tabulka_Změna (ByVal Target As Range)

Sloupce("D:F").Automatické přizpůsobení

Dim Proj1 As String
Dim Proj2 As String
Dim Proj3 As String
Dim Proj4 As String
Dim Proj5 As String
Dim Proj6 As String
Dim Proj7 As String
Dim Proj8 As String
Dim Proj9 As String
Dim Proj10 As String

Proj1 = ActiveWorkbook.Sheets("Projects").Range("A1").Value
Proj2 = ActiveWorkbook.Sheets("Projects").Range("A2").Value
Proj3 = ActiveWorkbook.Sheets("Projects").Range("A3").Value
Proj4 = ActiveWorkbook.Sheets("Projects").Range("A4").Value
Proj5 = ActiveWorkbook.Sheets("Projects").Range("A5").Value
Proj6 = ActiveWorkbook.Sheets("Projects").Range("A6").Value
Proj7 = ActiveWorkbook.Sheets("Projects").Range("A7").Value
Proj8 = ActiveWorkbook.Sheets("Projects").Range("A8").Value
Proj9 = ActiveWorkbook.Sheets("Projects").Range("A9").Value
Proj10 = ActiveWorkbook.Sheets("Projects").Range("A10").Value

Dim xRG jako rozsah
Dim xHRow jako celé číslo
Nastavit xRG = Range("C3")
If Not Intersect(Target, xRG) Is Nothing Then

If Target.Value = Proj1 Then
Application.Columns("E:F").Hidden = True
Application.Columns("D").Hidden = False

ElseIf Target.Value = Proj2 Then
Rozsah("D:D, F:F").EntireColumn.Hidden = Pravda
Application.Columns("E").Hidden = False

End If
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
To je přesně to, co jsem hledal. Když uživatel zadá hodnotu do buňky, spustí se jednoduché třídicí makro. Makro běží dobře samo o sobě, ale pomocí navrhovaného kódu dostávám neplatné použití chyby vlastnosti.

Co by mohlo být problém?
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í