Μετάβαση στο κύριο περιεχόμενο

 Πώς να εκτελέσετε μακροεντολή με βάση την τιμή κελιού στο Excel;

Ας υποθέσουμε, έχω πολλούς κωδικούς μακροεντολών στο βιβλίο εργασίας μου και τώρα θέλω να εκτελέσω αυτούς τους κωδικούς με βάση την τιμή του κελιού. Σε αυτό το άρθρο, θα μιλήσω για διάφορες καταστάσεις που ενδέχεται να υποφέρετε στην καθημερινή σας εργασία όταν χρησιμοποιείτε το Excel.

Εκτελέστε ή ενεργοποιήστε τη μακροεντολή εάν η τιμή κελιού είναι μεγαλύτερη ή μικρότερη από μια συγκεκριμένη τιμή με τον κώδικα VBA

Εκτελέστε ή ενεργοποιήστε μακροεντολή εάν η τιμή κελιού ισούται με συγκεκριμένο κείμενο με τον κώδικα VBA


βέλος μπλε δεξιά φούσκα Εκτελέστε ή ενεργοποιήστε τη μακροεντολή εάν η τιμή κελιού είναι μεγαλύτερη ή μικρότερη από μια συγκεκριμένη τιμή με τον κώδικα VBA

Για παράδειγμα, εάν η τιμή στο κελί A1 είναι μεταξύ 10 και 50, εκτελέστε το macro1 και εάν η τιμή είναι μεγαλύτερη από 50, εκτελέστε το macro2. Για να επιλύσετε αυτήν την εργασία στο Excel, εφαρμόστε τον ακόλουθο κώδικα VBA.

1. Κάντε δεξί κλικ στην καρτέλα φύλλων που θέλετε να εκτελέσετε τη μακροεντολή βάσει μιας τιμής κελιού και, στη συνέχεια, επιλέξτε Προβολή κωδικού από το μενού περιβάλλοντος και στο ανοιχτό Microsoft Visual Basic για εφαρμογές παράθυρο, αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα στην κενή ενότητα:

Κωδικός VBA: Εκτέλεση μακροεντολής εάν η τιμή κελιού είναι μεγαλύτερη ή μικρότερη από:

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 run μακροεντολή με βάση την τιμή 1

Note: Στον παραπάνω κωδικό:

A1 είναι το κελί που περιέχει τη συγκεκριμένη τιμή στην οποία θέλετε να εκτελέσετε τη μακροεντολή.

Περίπτωση 10 έως 50: Macro1: σημαίνει ότι εάν η τιμή είναι μεταξύ 10 και 50, εκτελέστε το Macro1;

Περίπτωση είναι> 50: Macro2: σημαίνει ότι εάν η τιμή είναι μεγαλύτερη από 50, εκτελέστε το Macro2.

Αλλάξτε αυτά τα ονόματα και τα κριτήρια μακροεντολών ανάλογα με τις ανάγκες σας και μπορείτε επίσης να προσθέσετε περισσότερα κριτήρια μετά το Περίπτωση γραφή.

2. Στη συνέχεια, αποθηκεύστε και κλείστε αυτό το παράθυρο κώδικα, τώρα, όταν η τιμή που εισάγετε είναι μεταξύ 10 και 50 στο κελί A1, θα ενεργοποιηθεί το Macro1, εάν η τιμή που έχετε εισαγάγει είναι μεγαλύτερη από 50, εκτελείται το Macro2.


βέλος μπλε δεξιά φούσκα Εκτελέστε ή ενεργοποιήστε μακροεντολή εάν η τιμή κελιού ισούται με συγκεκριμένο κείμενο με τον κώδικα VBA

Εάν θέλετε να ενεργοποιήσετε τη μακροεντολή βάσει συγκεκριμένου κειμένου σε ένα κελί, για παράδειγμα, να εκτελέσετε τη μακροεντολή1 εάν εισαχθεί το κείμενο "Διαγραφή" και να εκτελέσετε τη μακροεντολή2 εάν πληκτρολογήσετε το κείμενο "Εισαγωγή". Ο παρακάτω κώδικας μπορεί να σας βοηθήσει.

1. Κάντε δεξί κλικ στο φύλλο που θέλετε να εκτελέσετε τη μακροεντολή με βάση την τιμή κελιού και, στη συνέχεια, επιλέξτε Προβολή κωδικού από το μενού περιβάλλοντος και στο ανοιχτό Microsoft Visual Basic για εφαρμογές παράθυρο, αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα στην κενή ενότητα:

Κωδικός VBA: Εκτελέστε τη μακροεντολή εάν η τιμή του κελιού είναι ένα συγκεκριμένο κείμενο

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 run μακροεντολή με βάση την τιμή 2

Note: Στον παραπάνω κώδικα, "Διαγραφή"Και"Κύριο θέμαΕίναι τα κείμενα κελιού στα οποία θέλετε να εκτελέσετε μακροεντολές βάσει και Μακροεντολή1 και Μακροεντολή2 είναι οι μακροεντολές που θέλετε να εκτελέσετε βάσει κειμένου. Αλλάξτε τα ανάλογα με τις ανάγκες σας.

2. Στη συνέχεια, αποθηκεύστε αυτόν τον κωδικό και κλείστε το παράθυρο, τώρα, όταν εισαγάγετε το κείμενο "Διαγραφή" στο κελί A1, ενεργοποιείται η μακροεντολή1, εάν εισαχθεί το κείμενο "Εισαγωγή", θα εκτελεστεί η μακροεντολή2.


Σχετικά άρθρα:

Πώς να εκτελέσετε μακροεντολή όταν αλλάζει η τιμή κελιού στο Excel;

Πώς να εκτελέσετε αυτόματα τη μακροεντολή πριν από την εκτύπωση στο Excel;

Πώς να εκτελέσετε μακροεντολή με βάση την τιμή που επιλέγεται από την αναπτυσσόμενη λίστα στο Excel;

Πώς να εκτελέσετε μακροεντολή κάνοντας κλικ στους υπερσυνδέσμους στο Excel;

Πώς να εκτελέσετε μακροεντολή όταν το φύλλο έχει επιλεγεί από ένα βιβλίο εργασίας;

Τα καλύτερα εργαλεία παραγωγικότητας γραφείου

Δημοφιλή χαρακτηριστικά: Εύρεση, επισήμανση ή αναγνώριση διπλότυπων   |  Διαγραφή κενών γραμμών   |  Συνδυάστε στήλες ή κελιά χωρίς απώλεια δεδομένων   |   Γύρος χωρίς φόρμουλα ...
Σούπερ Αναζήτηση: VLookup πολλαπλών κριτηρίων    VLookup πολλαπλών τιμών  |   VLookup σε πολλά φύλλα   |   Ασαφής αναζήτηση ....
Σύνθετη αναπτυσσόμενη λίστα: Γρήγορη δημιουργία αναπτυσσόμενης λίστας   |  Εξαρτημένη αναπτυσσόμενη λίστα   |  Πολλαπλή αναπτυσσόμενη λίστα ....
Διαχειριστής στήλης: Προσθέστε έναν συγκεκριμένο αριθμό στηλών  |  Μετακίνηση στηλών  |  Εναλλαγή κατάστασης ορατότητας κρυφών στηλών  |  Συγκρίνετε εύρη και στήλες ...
Επιλεγμένα Χαρακτηριστικά: Εστίαση πλέγματος   |  Προβολή σχεδίου   |   Μεγάλη Formula Bar    Διαχείριση βιβλίου εργασίας & φύλλου   |  Βιβλιοθήκη πόρων (Αυτόματο κείμενο)   |  Επιλογή ημερομηνίας   |  Συνδυάστε φύλλα εργασίας   |  Κρυπτογράφηση/Αποκρυπτογράφηση κελιών    Αποστολή email ανά λίστα   |  Σούπερ φίλτρο   |   Ειδικό φίλτρο (φίλτρο με έντονη γραφή/πλάγια γραφή/διαγραφή...) ...
Κορυφαία 15 σύνολα εργαλείων12 Κείμενο Εργαλεία (Προσθήκη κειμένου, Κατάργηση χαρακτήρων, ...)   |   50 + Διάγραμμα Τύποι (Gantt διάγραμμα, ...)   |   40+ Πρακτικό ΜΑΘΗΜΑΤΙΚΟΙ τυποι (Υπολογίστε την ηλικία με βάση τα γενέθλια, ...)   |   19 Εισαγωγή Εργαλεία (Εισαγωγή κωδικού QR, Εισαγωγή εικόνας από το μονοπάτι, ...)   |   12 Μετατροπή Εργαλεία (Αριθμοί σε λέξεις, Μετατροπή Συναλλάγματος, ...)   |   7 Συγχώνευση & διαχωρισμός Εργαλεία (Σύνθετες σειρές συνδυασμού, Διαίρεση κελιών, ...)   |   ... κι αλλα

Αυξήστε τις δεξιότητές σας στο Excel με τα Kutools για Excel και απολαύστε την αποτελεσματικότητα όπως ποτέ πριν. Το Kutools για Excel προσφέρει πάνω από 300 προηγμένες δυνατότητες για την ενίσχυση της παραγωγικότητας και την εξοικονόμηση χρόνου.  Κάντε κλικ εδώ για να αποκτήσετε τη δυνατότητα που χρειάζεστε περισσότερο...

kte καρτέλα 201905


Το Office Tab φέρνει τη διεπαφή με καρτέλες στο Office και κάνει την εργασία σας πολύ πιο εύκολη

  • Ενεργοποίηση επεξεργασίας και ανάγνωσης καρτελών σε Word, Excel, PowerPoint, Publisher, Access, Visio και Project.
  • Ανοίξτε και δημιουργήστε πολλά έγγραφα σε νέες καρτέλες του ίδιου παραθύρου και όχι σε νέα παράθυρα.
  • Αυξάνει την παραγωγικότητά σας κατά 50% και μειώνει εκατοντάδες κλικ του ποντικιού για εσάς κάθε μέρα!
Comments (19)
Rated 5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
Hallo,

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,

Vielen Dank im vorraus.

LG Stfan
This comment was minimized by the moderator on the site
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 macro leggendo vero mi nasconde lo sheet2 altrimenti mi scopre la sheet 2.

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

Grazie
This comment was minimized by the moderator on the site
Hello, Carlo,
In fact the second code in this article can solve your problem.
Note: You just need to change the text to True and False into the code, and change the code name to your own.
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 


Please try again, thank you!
This comment was minimized by the moderator on the site
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.

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
This comment was minimized by the moderator on the site
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" e "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 o 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
This comment was minimized by the moderator on the site
Hi,
How to modify this code base on cell A1 formula calculation result
Sub Worksheet_Calculate()
Please help

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
Rated 5 out of 5
This comment was minimized by the moderator on the site
Hello, FG,
To make the code work in formula cells, please apply the below code:
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

Please have a try, hope it can help you!
This comment was minimized by the moderator on the site
Thank you very much! It now works :)
This comment was minimized by the moderator on the site
Hi!

Im very new to VBA and I tried this solution for an excel-sheet I have. I basically just have a long list in excel, where you in column T should type Yes or No, and I would like it to, If typed Yes, run a macro... I tried a lot of different ways of defining the range but nothing works.

Sub worksheet_change(ByVal target As Range)

Set target = Range("T:T")
If target.Value = "Yes" Then
Call Macro1
End If

End Sub

I highlights this problem(runtime error- type mismatch): If target.Value = "Yes" Then

Can anybody help?

Best regards, Isabella
This comment was minimized by the moderator on the site
Hello, Westergaard
May be the following VBA code can help you: (Note: Please change the name of the Macro1 to your own code name)
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

Please try, hope it can help you!
This comment was minimized by the moderator on the site
Hello, Gilles,
You should insert a Spin Button (ActiveX Control) first, and then right clcik it, choose View code, then, copy and paste the below code between the existing scripts,
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

Please try, hope it can help you!
This comment was minimized by the moderator on the site
Bonjour,
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
This comment was minimized by the moderator on the site
Hola, una consulta, como se haría si por ejemplo dado un numero se pueda ejecutar las dos macros
This comment was minimized by the moderator on the site
Hello, Gustavo
To solve your problem, please apply the following code:
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

Please try, hope it can help you!
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