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

 Come eseguire la macro in base al valore della cella in Excel?

Supponendo di avere più codici macro nella mia cartella di lavoro e ora voglio eseguire questi codici in base al valore della cella. In questo articolo, parlerò di diverse situazioni che potresti soffrire nel tuo lavoro quotidiano quando usi Excel.

Esegui o attiva la macro se il valore della cella è maggiore o minore di un valore specifico con codice VBA

Esegui o attiva la macro se il valore della cella è uguale a un testo specifico con codice VBA


freccia blu freccia destra Esegui o attiva la macro se il valore della cella è maggiore o minore di un valore specifico con codice VBA

Ad esempio, se il valore nella cella A1 è compreso tra 10 e 50, eseguire macro1 e, se il valore è maggiore di 50, eseguire macro2. Per risolvere questo lavoro in Excel, applica il seguente codice VBA.

1. Fare clic con il pulsante destro del mouse sulla scheda del foglio in cui si desidera eseguire la macro in base a un valore di cella, quindi scegliere Visualizza codice dal menu contestuale e nel file Microsoft Visual Basic per le applicazioni finestra, copia e incolla il seguente codice nel modulo vuoto:

Codice VBA: esegui la macro se il valore della cella è maggiore o minore di:

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 esegue la macro in base al valore della cella 1

Note:: Nel codice sopra:

A1 è la cella che contiene il valore specifico su cui si desidera eseguire la macro;

Caso da 10 a 50: Macro1: significa che se il valore è compreso tra 10 e 50, eseguire Macro1;

Case è> 50: Macro2: significa che se il valore è maggiore di 50, eseguire Macro2.

Si prega di modificare i nomi e i criteri di queste macro in base alle proprie esigenze e si possono anche aggiungere altri criteri dopo il Caso script.

2. Quindi salva e chiudi questa finestra di codice, ora, quando il valore immesso è compreso tra 10 e 50 nella cella A1, verrà attivata la Macro1, se il valore inserito è maggiore di 50, viene eseguita Macro2.


freccia blu freccia destra Esegui o attiva la macro se il valore della cella è uguale a un testo specifico con codice VBA

Se si desidera attivare la macro in base a un testo specifico in una cella, ad esempio, eseguire la macro1 se viene inserito il testo "Elimina" ed eseguire la macro2 se viene digitato il testo "Inserisci". Il codice seguente può farti un favore.

1. Fare clic con il pulsante destro del mouse sul foglio in cui si desidera eseguire la macro in base al valore della cella, quindi scegliere Visualizza codice dal menu contestuale e nel file Microsoft Visual Basic per le applicazioni finestra, copia e incolla il seguente codice nel modulo vuoto:

Codice VBA: esegui la macro se il valore della cella è un testo specifico

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 esegue la macro in base al valore della cella 2

Note:: Nel codice sopra, "Elimina" e "inserire"Sono i testi delle celle su cui si desidera eseguire le macro in base a, e Macro1 e Macro2 sono le macro che vuoi eseguire in base al testo. Si prega di modificarli secondo le proprie necessità.

2. Quindi salva questo codice e chiudi la finestra, ora, quando inserisci il testo “Elimina” nella cella A1, viene attivata la macro1, se viene inserito il testo “Inserisci”, verrà eseguita la macro2.


Articoli correlati:

Come eseguire la macro quando il valore della cella cambia in Excel?

Come eseguire automaticamente la macro prima di stampare in Excel?

Come eseguire la macro in base al valore selezionato dall'elenco a discesa in Excel?

Come eseguire la macro facendo clic sui collegamenti ipertestuali in Excel?

Come eseguire la macro quando il foglio viene selezionato da una cartella di lavoro?


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (19)
Rinomato 5 su 5 · Valutazioni 1
Questo commento è stato fatto dal moderatore sul sito
Ciao, che ne dici se vuoi eseguire una macro basata su due celle? Una cella è basata su testo e l'altra cella ha valori numerici? Quindi vorresti chiamare una macro se le due celle mostrano esattamente quello che vuoi, come "SÌ" per la prima cella e 1 per la seconda cella, in caso contrario verrà visualizzata una finestra pop che dice "Non trovato".
Questo commento è stato fatto dal moderatore sul sito
Requisito:
In base alla selezione
Verrà visualizzato un elenco a discesa per le seguenti tre proprietà della stessa dimensione di seguito.
E ci saranno tre cellule derivate che saranno derivate dalle cellule (G46, G47 e G48)

Scenario:
Se seleziono un valore dall'elenco a discesa del centro di costo, la cella derivata dal centro di costo (K46) dovrebbe essere popolata con il valore selezionato dall'elenco a discesa del centro di costo (H46) e le altre due celle derivate (K47 e k48) dovrebbero diventare vuote.

Allo stesso modo, se seleziono il valore dall'elenco a discesa Gestore budget, la cella derivata da Gestore budget dovrebbe essere popolata con il valore selezionato dall'elenco a discesa Gestore budget (H47) e le altre due celle derivate (K45 e k48) dovrebbero diventare vuote.
Questo commento è stato fatto dal moderatore sul sito
Sto lavorando con l'analisi dei risultati. In questo caso, i dati in Excel saranno come questo Nome, Nome secondario, Crade. Ora, voglio trovare i numeri di tutti i pass o dei candidati di successo dal risultato. Come posso averlo. Perché sto avendo 6 soggetti diversi e i loro risultati in un unico foglio Excel. Se uno studente ha fallito in una materia, non è uno studente di successo. Come rimuovere il loro nome in tutti i soggetti.
Questo commento è stato fatto dal moderatore sul sito
Correggi il codice entrambi per lo stesso foglio di lavoro.
PRIMO CODICE PERFETTAMENTE FUNZIONANTE
Private Sub Worksheet_Change (ByVal Target As Range)
If Not Intersect(Target, Range("D1")) non è niente allora
Seleziona Intervallo casi ("D1")
Caso "0.5": metà
Caso "1": Uno
Caso "1.25": OneTwentyFive
End Select
End If
End Sub

SECONDO CODICE NON FUNZIONANTE (correggere quanto segue)
Modifica sub privato (per valore target come intervallo)
If Not Intersect(Target, Range("D2")) non è niente allora
Seleziona Intervallo casi ("D2")
Caso "9.53": novevirgolacinquetre
End Select
End If
End Sub
Questo commento è stato fatto dal moderatore sul sito
Olà, quero fazer o seguinte:
Na Celula A1, assim que ela summerr preenchida passe para a celula de baixo, no caso A2.
Eu uso um leitor de codigo de barras para catastrar produtos, ele lê os numeros automaticis, ai tenho que ficar apertando ENTER para ir para celula de baixo.

Grazie!
Questo commento è stato fatto dal moderatore sul sito
Hola, una consulta, come se haría si por ejemplo dado un numero se pueda ejecutar les dos macros
Questo commento è stato fatto dal moderatore sul sito
Ciao, Gustavo
Per risolvere il tuo problema, applica il seguente codice:
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

Per favore, prova, spero che possa aiutarti!
Questo commento è stato fatto dal moderatore sul sito
Buongiorno,
je souhaiterais appliquer cette macro a 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.

grazie in anticipo
Questo commento è stato fatto dal moderatore sul sito
Ciao, Gilles,
Dovresti inserire a Pulsante di rotazione (controllo ActiveX) prima, quindi fai clic con il pulsante destro del mouse, scegli Visualizza codice, quindi, copia e incolla il codice seguente tra gli script esistenti,
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

Per favore, prova, spero che possa aiutarti!
Questo commento è stato fatto dal moderatore sul sito
Ciao!

Sono molto nuovo di VBA e ho provato questa soluzione per un foglio Excel che ho. Fondamentalmente ho solo un lungo elenco in Excel, in cui nella colonna T dovresti digitare Sì o No, e mi piacerebbe, Se digitato Sì, esegui una macro ... Ho provato molti modi diversi per definire l'intervallo ma niente funziona.

Sub worksheet_change (destinazione ByVal come intervallo)

Imposta obiettivo = Intervallo ("T:T")
Se target.Value = "Sì" Allora
Chiama Macro1
End If

End Sub

Evidenzia questo problema (mancata corrispondenza del tipo di errore di runtime): If target.Value = "Yes" Then

Qualcuno può aiutarmi?

Un caro saluto, Isabella
Questo commento è stato fatto dal moderatore sul sito
Ciao, Westergaard
Potrebbe essere il seguente codice VBA che può aiutarti: (Nota: cambia il nome del file Macro1 al tuo nome in codice)
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

Per favore, prova, spero che possa aiutarti!
Questo commento è stato fatto dal moderatore sul sito
Grazie mille! ora funziona :)
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Come modificare questa base di codice sul risultato del calcolo della formula della cella A1
Sub Foglio di lavoro_Calcola()
Per favore aiuto

Private Sub Worksheet_Change (ByVal Target As Excel.Range)
Se Target.Cells.Count > 1 Quindi esci da Sub
If IsNumeric(Target) And Target.Address = "$A$1" Then
Selezionare Caso.Valore
Caso da 10 a 50: Macro1
Case è> 50: Macro2
End Select
End If
End Sub
Rinomato 5 su 5
Questo commento è stato fatto dal moderatore sul sito
Ciao, F.G.,
Per far funzionare il codice nelle celle della formula, applica il codice seguente:
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

Per favore, prova, spero che possa aiutarti!
Questo commento è stato fatto dal moderatore sul sito
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" vengono 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 da 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
Questo commento è stato fatto dal moderatore sul sito
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 iniziare le macro e compilata o meno?

Grazie
Questo commento è stato fatto dal moderatore sul sito
Buongiorno,
vorrei eseguire una macro quando una in una cella viene inserito un controllo "if" o se viene inserito 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 si inserisce in A1 manualmente un valore (in questo caso vero o falso).

Grazie
Questo commento è stato fatto dal moderatore sul sito
Ciao Carlo,
Infatti il ​​secondo codice in questo articolo può risolvere il tuo problema.
Note:: Devi solo cambiare il testo in True e False nel codice e cambiare il nome del codice con il tuo.
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 


Si prega di riprovare, grazie!
Questo commento è stato fatto dal moderatore sul sito
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 zB 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. Anche 23 +1 dann 24 + 1 dann 25 +1 usw usw.


Vielleicht kann mir da jemand helfen,

Grazie in anticipo.

LG Stfan
Non ci sono ancora commenti pubblicati qui
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL