Přejít k hlavnímu obsahu

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ší nástroje pro produktivitu v kanceláři

Populární funkce: Najít, zvýraznit nebo identifikovat duplikáty   |  Odstranit prázdné řádky   |  Kombinujte sloupce nebo buňky bez ztráty dat   |   Kolo bez vzorce ...
Super vyhledávání: Více kritérií VLookup    VLookup s více hodnotami  |   VLookup na více listech   |   Fuzzy vyhledávání ....
Pokročilý rozevírací seznam: Rychle vytvořte rozevírací seznam   |  Závislý rozbalovací seznam   |  Vícenásobný výběr rozevíracího seznamu ....
Správce sloupců: Přidejte konkrétní počet sloupců  |  Přesunout sloupce  |  Přepnout stav viditelnosti skrytých sloupců  |  Porovnejte rozsahy a sloupce ...
Doporučené funkce: Zaměření mřížky   |  Návrhové zobrazení   |   Velký Formula Bar    Správce sešitů a listů   |  Knihovna zdrojů (Automatický text)   |  Výběr data   |  Zkombinujte pracovní listy   |  Šifrovat/dešifrovat buňky    Odesílat e-maily podle seznamu   |  Super filtr   |   Speciální filtr (filtr tučné/kurzíva/přeškrtnuté...) ...
Top 15 sad nástrojů12 Text Tools (doplnit text, Odebrat znaky, ...)   |   50+ Graf Typ nemovitosti (Ganttův diagram, ...)   |   40+ Praktické Vzorce (Vypočítejte věk na základě narozenin, ...)   |   19 Vložení Tools (Vložte QR kód, Vložit obrázek z cesty, ...)   |   12 Konverze Tools (Čísla na slova, Přepočet měny, ...)   |   7 Sloučit a rozdělit Tools (Pokročilé kombinování řádků, Rozdělit buňky, ...)   |   ... a více

Rozšiřte své dovednosti Excel pomocí Kutools pro Excel a zažijte efektivitu jako nikdy předtím. Kutools for Excel nabízí více než 300 pokročilých funkcí pro zvýšení produktivity a úsporu času.  Kliknutím sem získáte funkci, kterou nejvíce potřebujete...

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!
Comments (18)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
It worked, thanks for the help
This comment was minimized by the moderator on the site
This is exactly what I was looking go for. When a user enters a value in a cell, a simple sort macro would run. The macro runs fine on its own but I get an invalid use of property error using the suggested code.

What could be the issue?
This comment was minimized by the moderator on the site
I am using the code below to hide various columns depending on the selection from a drop-down box located in cell C3, but after a calculation is performed anywhere in the worksheet, ALL columns become UNHIDDEN. How do I fix this?

Private Sub Worksheet_Change(ByVal Target As Range)

Columns("D:F").AutoFit

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 As Range
Dim xHRow As Integer
Set 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
Range("D:D, F:F").EntireColumn.Hidden = True
Application.Columns("E").Hidden = False

End If
End If
End Sub
This comment was minimized by the moderator on the site
I am trying to automate 1 workbook (BOM) when another workbook(Parts Status) makes changes. The Parts status file updates every 15 minutes. I need to know how to automate a specific column when these changes occur? Any ideas
This comment was minimized by the moderator on the site
Hi guys, I am solving the following issue: I want to scrape a title of website when link inserted in column A and put this value to relevant cell (next to it) in column B. The issue seems to be that once I paste the website in column A, the code reruns the entire list from column A2 to "last row" as defined in the code. Is there any way to only modify column B once a single column A is modified? I.e. if Ipaste a link in column A36 I get a title in B36, regardless of whether the cell is in the middle of the used range or at the very bottom. I would like to use this without having to re-run multiple inputs as it currently stands; (i.e. the loop "for i =2 to last row")? Also, I would like to change the below from Modular macro i.e. sub to private sub reacting to change (i.e. intersect function) where the 'target' is any cell from A:A range. Many thanks!


Sub get_title_header()



Dim wb As Object

Dim doc As Object

Dim sURL As String

Dim lastrow As Long

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



For i = 2 To lastrow

Set wb = CreateObject("internetExplorer.Application")

sURL = Cells(i, 1)



wb.navigate sURL

wb.Visible = False



While wb.Busy

DoEvents

Wend



''HTML document

Set doc = wb.document



Cells(i, 2) = doc.Title



On Error GoTo err_clear

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

err_clear:

If Err <> 0 Then

Err.Clear

Resume Next

End If

wb.Quit

Range(Cells(i, 1), Cells(i, 3)).Columns.AutoFit

Next i



End Sub




Thank YOU!
This comment was minimized by the moderator on the site
Hola buenas tardes
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.
This comment was minimized by the moderator on the site
The macro that you are calling where do you have this located? I have mine in the Modules folder but when I put any value in any cell of the worksheet I get a Compile error saying:
Expected variable or procedure, not module.

Please help.
This comment was minimized by the moderator on the site
Hi, DrCartwright,
Sorry for replying to you so late.
Yes, as you said, the macro code should be located into the Module, and you need to change the code name to your own name as following screenshot shown:
This comment was minimized by the moderator on the site
Hey, useful code. I was thinking if it was possible to insert a ring around the cells that are changed as they are changed? And reset the circles every Monday ?
This comment was minimized by the moderator on the site
Hello, Kevin,
Here is no idea for solving your problem, if you have any good solution, please comment here.
This comment was minimized by the moderator on the site
Worked great for me! My dilemma is that I want it to be a relative reference macro and there is a difference between hitting enter to save the entry and delete to clear the cell.
This comment was minimized by the moderator on the site
This worked first time for me using data validation list which displays text based on the list selection.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations