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

 Jak automaticky spustit makro, když se změní výsledek vzorce buňky?

Předpokládejme, že mám seznam vzorců založených na datech ve sloupci A a sloupci B, jak je znázorněno na následujícím snímku obrazovky, nyní chci automaticky spustit konkrétní kód makra, když se změní výsledek vzorce se změnou relativních buněk. Existuje nějaký dobrý nápad vyřešit tuto práci v aplikaci Excel?

Automaticky spustit makro, když se výsledek vzorce buňky změní s kódem VBA


Automaticky spustit makro, když se výsledek vzorce buňky změní s kódem VBA


Následující kód VBA vám pomůže provést konkrétní kód automaticky, když se změní buňka výsledku vzorce, udělejte to takto:

1. Pravým tlačítkem klikněte na kartu listu, kterou chcete použít, a poté vyberte Zobrazit kód z kontextového menu 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: Automaticky spustit makro při změně výsledku vzorce buňky:

Private Sub Worksheet_Calculate()
'Updateby Extendoffice
    Dim Xrg As Range
    Set Xrg = Range("C2:C8")
    If Not Intersect(Xrg, Range("C2:C8")) Is Nothing Then
    Macro1
    End If
End Sub

Poznámka: Ve výše uvedeném kódu, C2: C8 je rozsah buněk vzorce, který chcete použít ,maco1 je název makra, které chcete spustit automaticky. Změňte to prosím podle svých potřeb.

2. Poté uložte a zavřete toto okno kódu, nyní, když se data v rozsahu A2: B8 změní tak, že způsobí změnu výsledku vzorce, váš konkrétní kód makra se spustí najednou.


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 (10)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Díky moc! Tohle mi fakt pomohlo.
Existuje nějaká metoda pro získání adresy změněné buňky (se vzorcem, tj. sloupec C v tomto příkladu).
Díky.
Tento komentář byl moderátorem webu minimalizován
Jaký smysl má podmínka? Vždy se vrátí true...jinými slovy: poběží i bez něj. To se také spustí vždy, když nějaká buňka na listu změní hodnotu.
Tento komentář byl moderátorem webu minimalizován
Takže, jaké je jméno mého makra. kde najdu jméno svého makra?
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Cenku,
Název makra je kód makra, který jste vložili do souboru aplikace Excel, a stačí změnit Macro1 ve výše uvedeném kódu na svůj vlastní.
Například sem vložím kód a název makra je: ColorCompanyDuplicates

Sub ColorCompanyDuplicates()
'Aktualizovat Extendoffice 20160704
Dim xRg jako rozsah
Dim xTxt As String
Dim xCell As Range
Dim xChar As String
Dim xCellPre As Range
Dim xCindex As Long
Dim xCol As Collection
Dim I As Long
On Error Resume Next
Pokud ActiveWindow.RangeSelection.Count > 1 Potom
xTxt = ActiveWindow.RangeSelection.AddressLocal
Jiný
xTxt = ActiveSheet.UsedRange.AddressLocal
End If
Set xRg = Application.InputBox("vyberte rozsah dat:", "Kutools pro Excel", xTxt, , , , , 8)
Pokud xRg není nic, pak Exit Sub
xCIindex = 2
Nastavit xCol = Nová kolekce
Pro každý xCell In xRg
On Error Resume Next
xCol.Add xCell, xCell.Text
Pokud Err.Number = 457 Pak
xCIindex = xCIindex + 1
Nastavit xCellPre = xCol(xCell.Text)
Pokud xCellPre.Interior.ColorIndex = xlNone, pak xCellPre.Interior.ColorIndex = xCIndex
xCell.Interior.ColorIndex = xCellPre.Interior.ColorIndex
ElseIf Err.Number = 9 Pak
MsgBox "Příliš mnoho duplicitních společností!", vbCritical, "Kutools pro Excel"
Konec Sub
End If
Při chybě GoTo 0
další
End Sub
Tento komentář byl moderátorem webu minimalizován
omlouvám se, nefunguje to, pokud vložím data ručně, funguje to. ale chci to pracovat automaticky bcz moje data se aktualizují pomocí rand calcaulate
Tento komentář byl moderátorem webu minimalizován
"Nastavit Xrg = rozsah("C2:C8")
If Not Intersect (Xrg, Range ("C2:C8")) není nic, pak"
tento stav se vyskytuje VŽDY....
Dávat smysl ???
Nebo je něco, čemu jsem nerozuměl?
Tento komentář byl moderátorem webu minimalizován
Správně, vyřešili jste tento problém a mohli byste se mi prosím podělit?
Tento komentář byl moderátorem webu minimalizován
Hej lidi,
Pro tento problém jsem použil následující kód, doufám, že to někomu pomůže:

Private Sub Worksheet_Calculate()
Statická stará hodnota
If Range("MyNamedRange") <> oldValue Then
KódZde
oldValue = Range("MyNamedRange").Value
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Hej lidi,
Níže je kód a chci zamknout buňky A2 a A3 poté, co se buňka A1 (A1 = B1+C1) změní ve výsledcích změny buď B1 nebo C1 nebo obojí. Ale to nejde. Pomohl by s tím někdo, prosím?

Private Sub Worksheet_Calculate()

Dim sPass
sPass = "123"
Dim Rng As Range
Nastavit rng = [A2:A3]
If Not Intersect(rng, [A1]) Is Nothing Then
S ActiveSheet
.Unprotect Password:=sPass
.Cells.Locked = False
Statická stará hodnota
If Range("A1") <> oldValue Then
rng.Locked = Pravda
.Protect Password:=sPass
oldValue = Rozsah("A1").Hodnota

End If
Konec s

End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Ahoj tým,

Vím, že je to staré téma, ale jak zkombinovat tuto metodu výpočtu a toto: https://www.extendoffice.com/documents/excel/1895-excel-record-date-and-time-when-cell-changes.html?

Cílem je zaznamenat datum do další buňky pokaždé, když se vypočítané hodnoty změní pro každou buňku ve sloupci.

Pozdravy,
James
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í