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

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

Předpokládejme, že v mém sešitu mám více kódů maker a teď chci tyto kódy spustit na základě hodnoty buňky. V tomto článku budu hovořit o několika situacích, které můžete při používání aplikace Excel utrpět při každodenní práci.

Spusťte nebo spusťte makro, pokud je hodnota buňky větší nebo menší než konkrétní hodnota s kódem VBA

Spusťte nebo spusťte makro, pokud se hodnota buňky rovná konkrétnímu textu s kódem VBA


šipka modrá pravá bublina Spusťte nebo spusťte makro, pokud je hodnota buňky větší nebo menší než konkrétní hodnota s kódem VBA

Například pokud je hodnota v buňce A1 mezi 10 a 50, spusťte makro1 a pokud je hodnota větší než 50, spusťte makro2. K vyřešení této úlohy v aplikaci Excel použijte následující kód VBA.

1. Klikněte pravým tlačítkem na kartu listu, kterou chcete spustit na základě hodnoty 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, pokud je hodnota buňky větší nebo menší než:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
    End If
End Sub

makro pro spuštění dokumentu založené na hodnotě buňky 1

Poznámka: Ve výše uvedeném kódu:

A1 je buňka, která obsahuje konkrétní hodnotu, na které chcete spustit makro;

Případ 10 až 50: Makro: to znamená, že pokud je hodnota mezi 10 a 50, spusťte Macro1;

Případ je> 50: Makro2: to znamená, že pokud je hodnota větší než 50, spusťte Macro2.

Změňte prosím tyto názvy maker a kritéria podle svých potřeb a můžete také přidat další kritéria podle Pouzdro skripty.

2. Poté uložte a zavřete toto okno s kódem, nyní, když je hodnota, kterou zadáte, mezi 10 a 50 v buňce A1, spustí se makro 1, pokud je zadaná hodnota větší než 50, provede se makro 2.


šipka modrá pravá bublina Spusťte nebo spusťte makro, pokud se hodnota buňky rovná konkrétnímu textu s kódem VBA

Chcete-li například spustit makro na základě konkrétního textu v buňce, spustit makro1, pokud je zadán text „Odstranit“, a spustit makro2, pokud je zadán text „Vložit“. Následující kód vám může udělat laskavost.

1. Klikněte pravým tlačítkem na list, který chcete provést na základě hodnoty buňky, a poté zvolte 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: Spusťte makro, pokud je hodnota buňky konkrétní text

Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "Delete" Then
 Call Macro1
End If
If target.Value = "Insert" Then
Call Macro2
End If
End Sub 

makro pro spuštění dokumentu založené na hodnotě buňky 2

Poznámka: Ve výše uvedeném kódu „Vymazat"A"Vložit„Jsou texty buněk, na kterých chcete spouštět makra, a Macro1 a Macro2 jsou makra, která chcete spustit na základě textu. Změňte je prosím podle svých potřeb.

2. Poté tento kód uložte a zavřete okno. Nyní, když v buňce A1 zadáte text „Odstranit“, spustí se makro1, pokud se zadá text „Vložit“, provede se makro2.


Související články:

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

Jak spustit makro automaticky před tiskem 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-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 (19)
Hodnocení 5 z 5 · 1 hodnocení:
Tento komentář byl moderátorem webu minimalizován
Ahoj, co když chcete spustit makro založené na dvou buňkách? Jedna buňka je textová a druhá buňka má číselné hodnoty? Pak byste chtěli zavolat makro, pokud dvě buňky ukazují přesně to, co chcete, například "ANO" pro první buňku a 1 pro druhou buňku, pokud ne, vyskakovací okno by ukázalo "Nenalezeno".
Tento komentář byl moderátorem webu minimalizován
Požadavek:
Na základě výběru
Zobrazí se rozevírací seznam pro následující tři vlastnosti stejné dimenze, jak je uvedeno níže.
A budou tři odvozené buňky, které budou odvozeny z buněk (G46, G47 a G48)

Scénář:
Pokud vyberu hodnotu z rozbalovacího seznamu nákladového střediska, buňka odvozená z nákladového střediska (K46) by měla být vyplněna hodnotou vybranou z rozevíracího seznamu nákladového střediska (H46) a další dvě odvozené buňky (K47 a k48) by měly být prázdné.

Podobně, pokud vyberu hodnotu z rozevíracího seznamu Správce rozpočtu, buňka odvozená od správce rozpočtu by měla být naplněna hodnotou vybranou z rozevíracího seznamu Správce rozpočtu (H47) a další dvě odvozené buňky (K45 a k48) by měly být prázdné.
Tento komentář byl moderátorem webu minimalizován
Pracuji s analýzou výsledků. V tomto případě budou data v excelu vypadat takto: Název, Sub name, Crade. Nyní chci z výsledku najít čísla všech úspěšných nebo úspěšných kandidátů. Jak to mohu získat. Protože mám 6 různých předmětů a jejich výsledky v jednom excelovém listu. Pokud student neuspěl v jednom předmětu, není úspěšným studentem. Jak odstranit jejich jméno ve všech předmětech.
Tento komentář byl moderátorem webu minimalizován
Opravte kód pro stejný list.
PRVNÍ KÓD FUNGUJE PERFEKTNĚ
Soukromá dílčí tabulka_Změna (ByVal Target As Range)
If Not Intersect(Target, Range("D1")) is Nothing Then
Vyberte rozsah případu ("D1")
Případ "0.5": Polovina
Případ "1": Jeden
Případ "1.25": OneTwentyFive
Konec Vybrat
End If
End Sub

DRUHÝ KÓD NEFUNGUJE (opravte prosím níže)
Změna privátní podskupiny (ByVal Target As Range)
If Not Intersect(Target, Range("D2")) is Nothing Then
Vyberte rozsah případu ("D2")
Případ "9.53": devět bodů pět pět tři
Konec Vybrat
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Olá, quero fazer nebo seguinte:
Na Celula A1, asim que ela estiver preenchida passe para a celula de baixo, no caso A2.
Eu uso um leitor de codigo de barras para cadastrar produtos, e ele lê os numeros automaticos, ai tenho que ficar apertando ENTER para ir para cellula de baixo.

Děkujeme!
Tento komentář byl moderátorem webu minimalizován
Ahoj, konzultovat, co se haría si por ejemplo dado un numero se pueda ejecutar las dos macros
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Gustavo
Chcete-li vyřešit svůj problém, použijte následující kód:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        If Target.Value > 10 And Target.Value < 50 Then
         macro1
         macro2
        End If
    End If
End Sub

Zkuste to prosím, doufám, že vám to pomůže!
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
je souhaiterais appliquer cette macro à mon code. Problém est que la cellule s'incrémente via une toupie et le code ne reconnais pas le changement de valeur de la cellule.
Quand je saisie la valeur manuellement celà fonctionne correction.

Merci d'avance
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Gillesi,
Měli byste vložit a Tlačítko otáčení (ovládání ActiveX) nejprve, a pak na to klikněte pravým tlačítkem, vyberte Zobrazit kód, poté zkopírujte a vložte níže uvedený kód mezi existující skripty,
Dim xWSh As Worksheet
Dim xOL As OLEObject
Dim xRg As Range
Set xWSh = Application.ActiveSheet
Set xOL = xWSh.OLEObjects("SpinButton1") 'The name of the spin button
Set xRg = xWSh.Range(xOL.LinkedCell)
If IsNumeric(xRg) And xRg.Address = "$A$1" Then
        Select Case xRg.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
End If

https://www.extendoffice.com/images/stories/comments/comment-skyyang/DOC-RUN-CODE.png

Zkuste to prosím, doufám, že vám to pomůže!
Tento komentář byl moderátorem webu minimalizován
Ahoj!

Jsem ve VBA velmi nový a zkusil jsem toto řešení pro excelový list, který mám. V podstatě mám jen dlouhý seznam v excelu, kde byste měli ve sloupci T zadat Ano nebo Ne, a chtěl bych, aby se při zadávání Ano spustilo makro... Zkoušel jsem mnoho různých způsobů definování rozsahu, ale nic nefunguje.

Sub worksheet_change (ByVal target As Range)

Nastavit cíl = rozsah("T:T")
If target.Value = "Yes" Then
Volání Macro1
End If

End Sub

Zdůrazňuji tento problém (chyba běhu – neshoda typu): If target.Value = "Yes" Then

Může někdo pomoci?

S pozdravem, Isabella
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Westergaarde
Může vám pomoci následující kód VBA: (Poznámka: Změňte název souboru Macro1 na vaše vlastní kódové jméno)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("T:T")) Is Nothing Then
If Target.Value = "Yes" Then
      Call Macro1
    End If
    End If
End Sub

Zkuste to prosím, doufám, že vám to pomůže!
Tento komentář byl moderátorem webu minimalizován
Děkuji mnohokrát! Už to funguje :)
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Jak upravit tento základ kódu na výsledku výpočtu vzorce buňky A1
Sub Worksheet_Calculate()
Prosím pomozte

Private Sub Worksheet_Change (ByVal Target As Excel. Range)
Pokud Target.Cells.Count > 1, pak Exit Sub
If IsNumeric(Target) And Target.Address = "$A$1" Then
Vyberte možnost Case Target.Value
Případ 10 až 50: Makro
Případ je> 50: Makro2
Konec Vybrat
End If
End Sub
Hodnocení 5 z 5
Tento komentář byl moderátorem webu minimalizován
Dobrý den, FG,
Aby kód fungoval v buňkách vzorce, použijte níže uvedený kód:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    ElseIf (Not Intersect(Range("$A$1"), Target.Dependents) Is Nothing) Then
        Set Rg = Intersect(Range("$A$1"), Target.Dependents)(1)
        Select Case Rg.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    End If
End Sub

Zkuste to prosím, doufám, že vám to pomůže!
Tento komentář byl moderátorem webu minimalizován
Čao skyyang. Spero tu possa aiutarmi. Ho un programmino in vba che basandosi su variazioni di prezzo di una cella (E1), collegata in DDE with a piattaforma di trading di borsa, fissa and prezzi: Massimo, Minimo, Apertura, Chiusura, per poi passare alla riga following in base a un intervallo temporale impostato all'apertura del foglio elettronico. Algoritmo da me sviluppato fa si che che nelle colonne: "BH" a "BI" vegano visualizzati a prezzi di acquisto and di vendita, solo quando soddisfatte le condizioni date, altrimenti le celle non restituiscono nessun valore. Quello di cui avrei bisogno è di un avviso sonoro .wav che mi avvisi quando viene restituito un valore, di acquisto o di vendita, in modo di non dover fissare lo schermo za 14 ore al giorno. Chcete-li vytvořit kodex "SoundMe()" online, můžete jej použít k novému masu nebo novému minimu nebo novému programu, který je součástí programu a programu. Máte problémy, které máte vyřešené? Děkuji za pozornost
Stefano
Tento komentář byl moderátorem webu minimalizován
Buongiorno,
ho provato il listato che permette di richiamare 2 macro al cambio del valore di una cella, se quel cambio deriva da una funzione "se" non funziona, se digito i valori (vero o falso) funziona.

Přijďte posso ovviare?
Eventualmente come potrei evitare di utilizzare il condizionale sulla cella e far verificare al listato se la cella che deve far avviare le macro è compilata o meno?

grazie
Tento komentář byl moderátorem webu minimalizován
Buongiorno,
vorrei eseguire una macro quando una in una cella viene inserito un controllo "if" o se viene inserita una data e non un numero.

Ad esempio se nella cella A1 inserisco: If(B2=0;vero;falso) e la makro leggendo vero mini nasconde lo sheet2 altrimenti mi scopre la sheet 2.

Pojď si dát jízdné?
Riesco a far funzionare il tutto se inserisco in A1 manualmente un valore (in questo caso vero o falso).

Díky
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Carlo,
Ve skutečnosti může váš problém vyřešit druhý kód v tomto článku.
Poznámka: Stačí změnit text na True a False v kódu a změnit kódové jméno na svůj vlastní.
Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "True" Then
 Call Macro1
End If
If target.Value = "False" Then
Call Macro2
End If
End Sub 


Zkuste to prosím znovu, děkujeme!
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

ich bräuchte dafür ein Makro,

ich kann dieses Problem nicht alleine lösen, wäre super wenn mir jemand helfen könnte.

In M1 steht die Zahl 5, jetzt soll der Bereich von A83 bis A683 auf die Zahl 5 geprüft werden, sollte zB A111 die Zahl 5 enthalten, dann soll C111 + 1 ( wenn in C111 23 da steht 24 stehen soll). Genau tak wenn in A444 eine 5 steht, dann soll C444 + 1 ( wenn C444 = 99 dann 100).
Immer wenn der Wert mit M1 übereinstimmt, dann soll diese Zelle in Spalte C immer wieder + 1 zählen. Také 23 +1 dann 24 + 1 dann 25 +1 usw usw.


Vielleicht kann mir da jemand helfen,

Děkuji předem.

LG Stefan
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