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

 Kako zagnati makro na podlagi vrednosti celice v Excelu?

Recimo, da imam v delovni knjigi več kod makrov, zdaj pa jih želim zagnati na podlagi vrednosti celice. V tem članku bom govoril o več situacijah, ki so vam lahko izpostavljene pri vsakodnevnem delu pri uporabi Excela.

Zaženi ali sproži makro, če je vrednost celice večja ali manjša od določene vrednosti s kodo VBA

Zaženi ali sproži makro, če je vrednost celice enako besedilu s kodo VBA


puščica modri desni mehurček Zaženi ali sproži makro, če je vrednost celice večja ali manjša od določene vrednosti s kodo VBA

Če je na primer vrednost v celici A1 med 10 in 50, zaženite makro1 in če je vrednost večja od 50, zaženite makro2. Če želite to nalogo rešiti v Excelu, uporabite naslednjo kodo VBA.

1. Z desno miškino tipko kliknite zavihek lista, za katerega želite zagnati makro na podlagi vrednosti celice, in nato izberite Ogled kode v priročnem meniju in v odprtem Microsoft Visual Basic za aplikacije okno, kopirajte in prilepite naslednjo kodo v prazen modul:

Koda VBA: Zaženite makro, če je vrednost celice večja ali manjša od:

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

doc zaženi makro na podlagi vrednosti celice 1

Opombe: V zgornji kodi:

A1 je celica, ki vsebuje določeno vrednost, na podlagi katere želite zagnati makro;

Primer 10 do 50: Makro1: pomeni, če je vrednost med 10 in 50, zaženite Macro1;

Primer je> 50: Macro2: pomeni, da je vrednost večja od 50, zaženite Macro2.

Imena makrov in merila teze spremenite po svojih željah, po kriteriju pa lahko dodate tudi več meril Zadeva skripta.

2. Nato shranite in zaprite to okensko okno. Zdaj, ko je vrednost, ki jo vnesete med 10 in 50 v celici A1, se sproži Macro1, če je vnesena vrednost večja od 50, se izvede Macro2.


puščica modri desni mehurček Zaženi ali sproži makro, če je vrednost celice enako besedilu s kodo VBA

Če želite na primer sprožiti makro na podlagi določenega besedila v celici, da zaženete makro1, če je vneseno besedilo »Delete«, in makro2, če je vneseno besedilo »Insert«. Naslednja koda vam lahko stori uslugo.

1. Z desno miškino tipko kliknite list, ki ga želite izvesti na podlagi vrednosti celice, in nato izberite Ogled kode v priročnem meniju in v odprtem Microsoft Visual Basic za aplikacije okno, kopirajte in prilepite naslednjo kodo v prazen modul:

Koda VBA: Zaženi makro, če je vrednost celice določeno besedilo

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 

doc zaženi makro na podlagi vrednosti celice 2

Opombe: V zgornji kodi jeBrisanje"In"Vstavi"So besedila celic, na katerih želite zagnati makre, in Makro1 in Makro2 so makri, ki jih želite zagnati na podlagi besedila. Prosimo, spremenite jih glede na vaše potrebe.

2. Nato shranite to kodo in zaprite okno. Ko v celico A1 vnesete besedilo “Delete”, se sproži makro1, če vnesete besedilo “Vstavi”, se izvede makro2.


Sorodni članki:

Kako zagnati makro, ko se vrednost celice spremeni v Excelu?

Kako samodejno zagnati makro pred tiskanjem v Excelu?

Kako zagnati makro na podlagi vrednosti, izbrane s spustnega seznama v Excelu?

Kako zagnati makro s klikom na hiperpovezave v Excelu?

Kako zagnati makro, ko je list izbran iz delovnega zvezka?


Najboljša orodja za pisarniško produktivnost

Kutools za Excel rešuje večino vaših težav in poveča vašo produktivnost za 80%

  • Ponovna uporaba: Hitro vstavite zapletene formule, grafikoni in vse, kar ste že uporabljali; Šifriraj celice z geslom; Ustvari poštni seznam in pošiljanje e-pošte ...
  • Vrstica Super Formula (enostavno urejanje več vrstic besedila in formule); Bralna postavitev (enostavno branje in urejanje velikega števila celic); Prilepite v filtrirani obseg...
  • Združi celice / vrstice / stolpce brez izgube podatkov; Vsebina razdeljenih celic; Združi podvojene vrstice / stolpce... prepreči podvojene celice; Primerjaj obsege...
  • Izberite Duplicate ali Unique Vrstice; Izberite prazne vrstice (vse celice so prazne); Super Find in Fuzzy Find v mnogih delovnih zvezkih; Naključna izbira ...
  • Natančna kopija Več celic brez spreminjanja sklica formule; Samodejno ustvarjanje referenc na več listov; Vstavi oznake, Potrditvena polja in še več ...
  • Izvleček besedila, Dodaj besedilo, Odstrani po položaju, Odstrani presledek; Ustvari in natisni vmesne seštevke strani Pretvarjanje med vsebino celic in komentarji...
  • Super filter (shranite in uporabite sheme filtrov za druge liste); Napredno razvrščanje glede na mesec / teden / dan, pogostost in drugo; Poseben filter s krepko, ležeče ...
  • Združite delovne zvezke in delovne liste; Spoji tabele na podlagi ključnih stolpcev; Razdelite podatke na več listov; Paketna pretvorba xls, xlsx in PDF...
  • Več kot 300 zmogljivih funkcij. Podpira Office / Excel 2007-2021 in 365. Podpira vse jezike. Enostavna uvedba v vašem podjetju ali organizaciji. 30-dnevna brezplačna preizkusna različica vseh funkcij. 60-dnevna garancija vračila denarja.
zavihek kte 201905

Kartica Office prinaša vmesnik z zavihki v Office in poenostavi vaše delo

  • Omogočite urejanje in branje z zavihki v Wordu, Excelu, PowerPointu, Publisher, Access, Visio in Project.
  • Odprite in ustvarite več dokumentov v novih zavihkih istega okna in ne v novih oknih.
  • Poveča vašo produktivnost za 50%in vsak dan zmanjša na stotine klikov miške za vas!
dno pisarniške mize
Komentarji (19)
Ocenjeno 5 iz 5 · 1 ocene
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, kaj pa, če želite zagnati makro na podlagi dveh celic? Ena celica temelji na besedilu, druga celica pa ima številčne vrednosti? Potem bi želeli poklicati makro, če dve celici prikazujeta točno tisto, kar želite, na primer "DA" za prvo celico in 1 za drugo celico, če ne, bi se v pojavnem oknu prikazalo "Ni najdeno".
Ta komentar je moderator na spletnem mestu minimiziral
Zahteva:
Na podlagi izbire
Na voljo bo spustni seznam za naslednje tri lastnosti iste dimenzije, kot je spodaj.
In tam bodo tri izpeljane celice, ki bodo izpeljane iz celic (G46, G47 in G48)

Scenarij:
Če izberem vrednost s spustnega seznama stroškovnega mesta , mora biti izpeljana celica stroškovnega mesta (K46) zapolnjena z vrednostjo, izbrano s spustnega seznama stroškovnega mesta (H46), drugi dve izpeljani celici (K47 in k48) pa bi morali postati prazni.

Podobno, če izberem vrednost s spustnega seznama Upravitelj proračuna, mora biti izpeljana celica upravitelja proračuna zapolnjena z vrednostjo, izbrano na spustnem seznamu Upravitelj proračuna (H47), drugi dve izpeljani celici (K45 in k48) pa bi morali postati prazni.
Ta komentar je moderator na spletnem mestu minimiziral
Delam z analizo rezultatov. V tem primeru bodo podatki v excelu takšni: Ime, Podime, Crade. Zdaj želim poiskati vse uspešno ali uspešne številke kandidatov iz rezultata. Kako ga lahko dobim. Ker imam 6 različnih predmetov in njihove rezultate v enem samem Excelovem listu. Če študent ni uspel pri enem predmetu, ni uspešen študent. Kako odstraniti njihovo ime v vseh predmetih.
Ta komentar je moderator na spletnem mestu minimiziral
Prosimo, popravite kodo obe za isti delovni list.
PRVA KODA DELUJE POPOLNO
Zasebni poddelovni list_Spremeni (ByVal Target As Range)
Če se ne seka(Cilj, obseg("D1")) je potem nič
Izberite obseg primerov ("D1")
Primer "0.5": polovica
Primer "1": ena
Primer "1.25": OneTwentyFive
Konec Izberi
Konec Če
End Sub

DRUGA KODA NE DELUJE (popravite spodaj)
Zasebna sprememba podpore (ByVal Target As Range)
Če se ne seka(Cilj, obseg("D2")) je potem nič
Izberite obseg primerov ("D2")
Primer "9.53": devetinpetintri
Konec Izberi
Konec Če
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Olá, quero fazer o seguinte:
Na Celula A1, assim 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 celula de baixo.

Hvala!
Ta komentar je moderator na spletnem mestu minimiziral
Hola, una consulta, como se haría si por ejemplo dado un numero se pueda ejecutar las dos macro
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, Gustavo
Če želite rešiti svojo težavo, uporabite naslednjo kodo:
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

Prosim poskusite, upam, da vam lahko pomaga!
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni,
je souhaiterais appliquer cette macro à mon code. Le problème 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 correctement.

Merci d'avance
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, Gilles,
Vstaviti bi morali a Gumb za vrtenje (kontrolnik ActiveX) najprej in nato z desno miškino tipko kliknite, izberite Ogled kode, nato kopirajte in prilepite spodnjo kodo med obstoječe skripte,
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

Prosim poskusite, upam, da vam lahko pomaga!
Ta komentar je moderator na spletnem mestu minimiziral
Živjo!

Sem zelo nov v VBA in sem preizkusil to rešitev za excel list, ki ga imam. V bistvu imam samo dolg seznam v excelu, kjer morate v stolpec T vnesti Da ali Ne, in rad bi, da Če vtipkate Da, zaženite makro ... Poskušal sem veliko različnih načinov definiranja obsega, vendar nič ne deluje.

Subworksheet_change(ByVal target As Range)

Nastavi cilj = obseg ("T:T")
Če je target.Value = "Da" Potem
Pokliči Macro1
Konec Če

End Sub

Izpostavljam to težavo (napaka med izvajanjem – neujemanje tipa): If target.Value = "Yes" Then

Ali lahko kdo pomaga?

Lep pozdrav, Isabella
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljen, Westergaard
Morda vam lahko pomaga naslednja koda VBA: (Opomba: spremenite ime datoteke Makro1 na svoje kodno ime)
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

Prosim poskusite, upam, da vam lahko pomaga!
Ta komentar je moderator na spletnem mestu minimiziral
Najlepša hvala! Zdaj deluje :)
Ta komentar je moderator na spletnem mestu minimiziral
Hi,
Kako spremeniti to kodo na podlagi rezultata izračuna formule celice A1
Subworksheet_Calculate()
prosim pomoč

Zasebni pod delovni list_Change(ByVal Target As Excel.Range)
Če je Target.Cells.Count > 1, potem Exit Sub
If IsNumeric(Target) And Target.Address = "$A$1" Potem
Izberite Ciljna vrednost primera
Primer 10 do 50: Makro1
Primer je> 50: Macro2
Konec Izberi
Konec Če
End Sub
Ocenjeno 5 iz 5
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, FG,
Če želite, da koda deluje v celicah formule, uporabite spodnjo kodo:
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

Prosimo, poskusite, upam, da vam bo pomagalo!
Ta komentar je moderator na spletnem mestu minimiziral
Ciao skyyang. Spero tu possa aiutarmi. Ho un programmino in vba che basandosi su variazioni di prezzo di una cella (E1), collegata in DDE con una piattaforma di trading di borsa, fissa i prezzi: Massimo, Minimo, Apertura, Chiusura, per poi passare alla riga successiva in base a un intervallo temporale impostato all'apertura del foglio elettronico. L'algoritmo da me sviluppato fa si che nelle colonne: "BH" in "BI" vengano visualizzati i prezzi di acquisto e di vendita, ma 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 per 14 ore al giorno. Ho provato a inserire un codice "SoundMe()" trovato on-line, ma suona ogni volta che c'è un nuovo massimo or un nuovo minimo nella riga in cui il programma sta aggiornando i prezzi. Pensi che il problema si possa risolvere? Grazie per l'attenzione
Stefano
Ta komentar je moderator na spletnem mestu minimiziral
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 ali false) funziona.

Come 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
Ta komentar je moderator na spletnem mestu minimiziral
buongiorno,
vorrei eseguire una macro quando una in una cella viene inserito un controllo "if" o se viene inserita una data e non un unnumo.

Na primer, v polje A1 je vstavljeno: If(B2=0;vero;false) in macro leggendo vero, ki mi je sledil, da je list2 dodatek mi scopre la sheet2.

Come posso fare?
Riesco a far funzionare il tutto se inserisco in A1 manualmente un valore (in questo caso vero o false).

Hvala
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, Carlo,
Pravzaprav lahko druga koda v tem članku reši vašo težavo.
Opombe: Besedilo v kodi morate le spremeniti v True in False ter spremeniti kodno ime v svoje.
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 


Poskusite ponovno, hvala!
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni,

ich bräuchte dafür ein Makro,

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

V 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 (če je v C111 23 steht ann soll da 24 stehen). Genau tako, da je v A444 eine 5 steht, dann soll C444 + 1 (wenn C444 = 99 in 100).
Immer wenn der Wert mit M1 übereinstimmt, dann soll diese Zelle in Spalte C immer wieder + 1 zählen. Tudi 23 +1 dann 24 + 1 dann 25 +1 dann usw usw.


Vielleicht kann mir da jemand helfen,

Že vnaprej se vam zahvaljujem.

LG Stfan
Tu še ni objavljenih komentarjev
Pustite vaše komentarje
Objava kot gost
×
Ocenite to objavo:
0   Znaki
Predlagane lokacije

Sledi nam

Copyright © 2009 - www.extendoffice.com. | Vse pravice pridržane. Poganja ga ExtendOffice. | Kazalo
Microsoft in logotip Office sta blagovni znamki ali registrirani blagovni znamki družbe Microsoft Corporation v ZDA in / ali drugih državah.
Zaščiteno s Sectigo SSL