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

 Cum se execută macro pe baza valorii celulei în Excel?

Presupunând că am mai multe coduri macro în registrul meu de lucru și acum vreau să rulez aceste coduri pe baza valorii celulei. În acest articol, voi vorbi despre mai multe situații pe care le-ați putea suferi în munca dvs. zilnică atunci când utilizați Excel.

Rulați sau declanșați macrocomanda dacă valoarea celulei este mai mare sau mai mică decât o anumită valoare cu codul VBA

Rulați sau declanșați macrocomanda dacă valoarea celulei este egală cu textul specific cu codul VBA


săgeată albastru dreapta balon Rulați sau declanșați macrocomanda dacă valoarea celulei este mai mare sau mai mică decât o anumită valoare cu codul VBA

De exemplu, dacă valoarea din celula A1 este între 10 și 50, rulați macro1 și dacă valoarea este mai mare de 50, rulați macro2. Pentru a rezolva această sarcină în Excel, vă rugăm să aplicați următorul cod VBA.

1. Faceți clic dreapta pe fila de foaie pe care doriți să o executați pe baza unei valori de celulă, apoi alegeți Afișați codul din meniul contextual și în meniul deschis Microsoft Visual Basic pentru aplicații fereastră, copiați și lipiți următorul cod în modulul gol:

Cod VBA: Rulați macro dacă valoarea celulei este mai mare sau mai mică decât:

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 rulează macro pe baza valorii 1 a celulei

notițe: În codul de mai sus:

A1 este celula care conține valoarea specifică pe care doriți să executați macrocomenzile;

Cazul 10 - 50: Macro1: înseamnă dacă valoarea este între 10 și 50, rulați Macro1;

Cazul este> 50: Macro2: înseamnă că dacă valoarea este mai mare de 50, rulați Macro2.

Vă rugăm să modificați aceste nume și criterii macro în funcție de nevoile dvs. și puteți adăuga și mai multe criterii în urma Caz script-ul.

2. Apoi salvați și închideți această fereastră de cod, acum, când valoarea pe care o introduceți este între 10 și 50 în celula A1, Macro1 va fi declanșat, dacă valoarea introdusă este mai mare de 50, Macro2 este executat.


săgeată albastru dreapta balon Rulați sau declanșați macrocomanda dacă valoarea celulei este egală cu textul specific cu codul VBA

Dacă doriți să declanșați macro-ul pe baza unui anumit text dintr-o celulă, de exemplu, pentru a rula macro1 dacă este introdus textul „Ștergeți” și rulați macro2 dacă este introdus textul „Insert”. Următorul cod vă poate face o favoare.

1. Faceți clic dreapta pe foaia pe care doriți să o executați pe baza valorii celulei, apoi alegeți Afișați codul din meniul contextual și în meniul deschis Microsoft Visual Basic pentru aplicații fereastră, copiați și lipiți următorul cod în modulul gol:

Cod VBA: rulați macro dacă valoarea celulei este un text specific

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 rulează macro pe baza valorii 2 a celulei

notițe: În codul de mai sus, „Șterge"Și"Insera”Sunt textele celulare pe care doriți să executați macrocomenzi și Macro1 și Macro2 sunt macrocomenzile pe care doriți să le executați pe baza textului. Vă rugăm să le schimbați după nevoile dvs.

2. Apoi salvați acest cod și închideți fereastra, acum, când introduceți textul „Ștergeți” în celula A1, se declanșează macro1, dacă este introdus textul „Inserați”, macro2 va fi executat.


Legate de articole:

Cum se execută macro când valoarea celulei se schimbă în Excel?

Cum se execută macro automat înainte de a imprima în Excel?

Cum se execută macro pe baza valorii selectate din lista derulantă în Excel?

Cum se execută macro făcând clic pe hyperlinkuri în Excel?

Cum se execută macro când foaia este selectată dintr-un registru de lucru?


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (19)
Evaluat 5 din 5 · evaluări 1
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, ce zici dacă vrei să rulezi o macrocomandă bazată pe două celule? O celulă este bazată pe text și cealaltă cu valori numerice? Apoi, ați dori să apelați o macrocomandă dacă cele două celule arată exact ceea ce doriți, cum ar fi „DA” pentru prima celulă și 1 pentru a doua celulă, dacă nu ar apărea o casetă pop care spune „Nu a fost găsit”.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cerinţă:
Pe baza selecției
Va exista o listă derulantă pentru următoarele trei proprietăți de aceeași dimensiune ca mai jos.
Și vor exista trei celule derivate care vor fi derivate din celule (G46, G47 și G48)

Scenariu:
Dacă selectez o valoare din lista derulantă a centrului de cost, celula derivată a centrului de cost (K46) ar trebui să fie populată cu valoarea selectată din lista derulantă a centrului de cost (H46), iar celelalte două celule derivate (K47 și k48) ar trebui să devină goale.

În mod similar, dacă selectez o valoare din lista derulantă Manager buget, celula derivată Manager buget ar trebui să fie populată cu valoarea selectată din lista derulantă Manager buget (H47), iar celelalte două celule derivate (K45 și k48) ar trebui să devină goale.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Lucrez cu analiza rezultatelor. În acest caz, datele din excel vor fi astfel: Nume, Subnume, Crade. Acum, vreau să găsesc toate numerele de promovare sau de candidați de succes din rezultat. Cum pot obține. Pentru că, am 6 subiecte diferite și rezultatele lor într-o singură foaie Excel. Dacă studentul a picat la o materie, el nu este un student de succes. Cum le eliminați numele în toate subiectele.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă rugăm să corectați codul ambele pentru aceeași foaie de lucru.
PRIMUL COD FUNCTIONEAZA PERFECT
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dacă nu se intersectează (țintă, interval ("D1")) este nimic, atunci
Selectați intervalul de cazuri („D1”)
Cazul „0.5”: jumătate
Cazul „1”: Unu
Cazul „1.25”: OneTwentyFive
Selectare sfârșit
Final, dacă
End Sub

AL DOILEA COD NU FUNCȚIONEAZĂ (vă rugăm să corectați cele de mai jos)
Modificare secundară privată (țintă ByVal ca interval)
Dacă nu se intersectează (țintă, interval ("D2")) este nimic, atunci
Selectați intervalul de cazuri („D2”)
Cazul „9.53”: nouă virgulă cinci trei
Selectare sfârșit
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Olá, quero fazer o următor:
Na Celula A1, assim que ela estiver preenchida passe pentru a celula de jos, no caz A2.
Eu use um leitor de codigo de barras para cadastrar products, e ele lê os numeros automaticos, ai tenho que ficar apertando ENTER pentru ir para celula de baixo.

Vă mulțumim!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hola, o consultare, cum ar fi și, de exemplu, un număr mare de macrouri pot executa
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Gustavo
Pentru a vă rezolva problema, vă rugăm să aplicați următorul cod:
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

Vă rugăm să încercați, sper că vă poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
bonjour,
imi doresc sa aplice acest macro à mon code. Le problème est que la cellule s'incrémente via une toupie și codul nu recunoaște schimbarea valorii celulei.
Quand je saisie la valeur manuellement celà functioneaza corect.

Va multumesc anticipat
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Gilles,
Ar trebui să introduceți a Buton de rotire (Control ActiveX) mai întâi, apoi faceți clic dreapta, alegeți Vizualizați codul, apoi, copiați și inserați codul de mai jos între scripturile existente,
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

Vă rugăm să încercați, sper că vă poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună!

Sunt foarte nou în VBA și am încercat această soluție pentru o foaie Excel pe care o am. Practic, am doar o listă lungă în Excel, în care tu în coloana T ar trebui să tastați Da sau Nu și mi-ar plăcea ca, Dacă ați tastat Da, rulați o macrocomandă... Am încercat o mulțime de moduri diferite de a defini intervalul, dar nimic nu merge.

Sub worksheet_change(ByVal target As Range)

Set target = Range("T:T")
Dacă target.Value = „Da” Atunci
Apelați Macro1
Final, dacă

End Sub

I evidențiază această problemă (nepotrivire tip eroare de rulare): Dacă target.Value = "Yes" Then

Poate cineva ajuta?

Salutări, Isabella
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Westergaard
Poate că următorul cod VBA vă poate ajuta: (Notă: vă rugăm să schimbați numele Macro1 la propriul nume de cod)
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

Vă rugăm să încercați, sper că vă poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc foarte mult! Acum merge :)
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Cum se modifică această bază de cod pe rezultatul calculului formulei celulei A1
Sub Foaia de lucru_Calculate()
Te rog ajuta-ma

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dacă Target.Cells.Count > 1, apoi Ieșiți din sub
Dacă IsNumeric(Target) And Target.Address = "$A$1" Atunci
Selectați Case Target.Value
Cazul 10 - 50: Macro1
Cazul este> 50: Macro2
Selectare sfârșit
Final, dacă
End Sub
Evaluat 5 din 5
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, FG,
Pentru ca codul să funcționeze în celulele formulei, vă rugăm să aplicați codul de mai jos:
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

Vă rugăm să încercați, sper că vă poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ciao skyyang. Spero tu possa aiutarmi. Ho un program in vba che bazează sus variații de preț di una cella (E1), conectată în DDE cu o platformă de tranzacționare de borsa, fissa și prețuri: Massimo, Minimo, Apertura, Chiusura, per poi passare alla riga successiva în baza a un intervallo temporale impostato all'apertura del foglio elettronico. L'algoritmo da me developer fa si che nelle colonne: "BH" e "BI" vineno afișarea prețurilor de cumpărare și de vânzare, ma doar când satisface condițiile date, altele le celle nu restituie niciun valoare. Quello di cui avrei nevoie è 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 probato a inserire un codice "SoundMe()" găsit on-line, ma suna orice volta che c'è un nou maximum sau un nou minimo nella riga în care programul sta actualizando i price. Pensi che il problema si possa risolvere? Merci per l'attenzione
Stefano
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună dimineața,
ho provato il listato che permette di richiamare 2 macro al cambio del valore di una cella, se ce schimb derivă da o funcție "se" non funcționează, se digito i valori (vero o falso) funcționează.

Come posso ovviare?
Eventualmente come potrei evitare di utiliza il condizionale sulla cella e far verificare al listato se la cella che deve far avviare le macro è compilata o meno?

mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună dimineața,
vorrei executa una macro când una într-o cella este introdus un control "if" sau se introduce o data și nu un număr.

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

Cum pot să fac?
Riesco a far funzionare il tutto se inserisco în A1 manualmente un valore (în acest caz vero o falso).

mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut, Carlo,
De fapt, al doilea cod din acest articol vă poate rezolva problema.
notițe: Trebuie doar să schimbați textul în Adevărat și Fals în cod și să schimbați numele codului cu al dvs.
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 


Vă rugăm să încercați din nou, vă mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,

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 z.B. A111 die Zahl 5 enthalten, dann soll C111 + 1 ( wenn in C111 23 steht dann soll da 24 stehen). Genau so 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. Also 23 +1 dann 24 + 1 dann 25 +1 usw usw.


Vielleicht kann mir da jemand helfen,

Vă mulțumim anticipat.

LG Stfan
Nu există comentarii postate aici încă
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL