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

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

Normalmente, in Excel, possiamo premere il tasto F5 o il pulsante Esegui per eseguire il codice VBA. Ma hai mai provato a eseguire il codice macro specifico quando il valore di una cella cambia? In questo articolo, introdurrò alcuni trucchi rapidi per affrontare questo lavoro in Excel.

Esegui o chiama macro quando un valore di cella specifico cambia con il codice VBA

Esegui o chiama macro quando un valore di cella cambia in un intervallo con codice VBA


freccia blu freccia destra Esegui o chiama macro quando un valore di cella specifico cambia con il codice VBA

Per eseguire un codice macro modificando il valore di una cella, il seguente codice VBA può farti un favore, per favore fai come segue:

1. Fare clic con il pulsante destro del mouse sulla scheda del foglio in cui si desidera eseguire la macro se il valore della cella cambia, 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 quando il valore della cella cambia:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro
    End If
End Sub

doc esegue la macro se la cella cambia 1

Note:: Nel codice sopra, A1 è la cella specifica su cui si desidera eseguire il codice, Mimacro è il nome della macro che vuoi eseguire. Si prega di modificarli secondo le proprie necessità.

2. Quindi salva e chiudi la finestra del codice, ora, quando inserisci o modifichi il valore nella cella A1, il codice specifico verrà attivato immediatamente.


freccia blu freccia destra Esegui o chiama macro quando un valore di cella cambia in un intervallo con codice VBA

Se desideri eseguire o attivare una macro quando il valore della cella di qualcuno cambia in un intervallo di celle, il seguente codice potrebbe aiutarti.

1. Fare clic con il pulsante destro del mouse sulla scheda del foglio in cui si desidera eseguire la macro se il valore della cella cambia, 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 quando qualsiasi valore di cella cambia in un intervallo:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

doc esegue la macro se la cella cambia 2

Note:: Nel codice sopra, A1: B100 sono le celle specifiche su cui si desidera eseguire il codice, Mimacro è il nome della macro che vuoi eseguire. Si prega di modificarli secondo le proprie necessità.

2. Quindi salva e chiudi la finestra del codice, ora, quando inserisci o modifichi il valore in una qualsiasi cella di A1: B100, il codice specifico verrà eseguito contemporaneamente.


Rimuovi tutte le macro da più cartelle di lavoro

Kutools for Excel's Rimuovi tutte le macro in batch l'utilità può aiutarti a rimuovere tutte le macro da più cartelle di lavoro di cui hai bisogno. Scarica e prova gratuitamente Kutools per Excel ora!

Kutools for Excel: con più di 300 utili componenti aggiuntivi di Excel, liberi di provare senza limitazioni in 30 giorni. Scarica e prova gratuita ora!


Articoli correlati:

Come eseguire automaticamente la macro prima di stampare in Excel?

Come eseguire la macro in base al valore della cella 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 (17)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Questo modulo non funziona per me. Dice che quando il VALORE della cella cambia, eseguirà il codice. Trovo che se digito nella cella funziona, ma se il valore della cella viene modificato da una formula, ad esempio un Counta, non viene eseguito. Hai una soluzione per eseguire una macro quando il VALORE cambia attraverso una formula? Grazie, Wayne
Questo commento è stato fatto dal moderatore sul sito
Stesso problema di Wayne. Qualsiasi aiuto molto apprezzato! Grazie Ronnie
Questo commento è stato fatto dal moderatore sul sito
Ciao ragazzi,

Sì, il codice sopra è disponibile solo quando il valore della cella cambia manualmente, se è necessario eseguire automaticamente un codice macro specifico quando il risultato della formula cambia con le relative celle modificate, visita questo articolo:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Per favore, provalo, e spero che la tua risposta.
Questo commento è stato fatto dal moderatore sul sito
Non funziona... e sto modificando manualmente il valore della cella. C'è qualche preconfigurazione che deve essere impostata?
Questo commento è stato fatto dal moderatore sul sito
Testarlo nella procedura e usarlo come parametro


Private Sub Worksheet_Change (ByVal Target As Range)

MsgBox Target.Address & "-" e Target.AddressLocal

End Sub
Questo commento è stato fatto dal moderatore sul sito
Sì, la descrizione dice che dovrebbe attivarsi quando il valore cambia, ma il secondo codice dice che è quando il valore non è nulla, e il primo non si attiva nemmeno quando un valore cambia, ma se premo F5 quando guardo il codice, vuole per attivare MyMacro, ma non sembra reagire ai cambiamenti di valore tanto quanto passare dal nulla a qualcosa o al contrario.
Questo commento è stato fatto dal moderatore sul sito
Questo ha funzionato per la prima volta per me utilizzando l'elenco di convalida dei dati che visualizza il testo in base alla selezione dell'elenco.
Questo commento è stato fatto dal moderatore sul sito
Ha funzionato benissimo per me! Il mio dilemma è che voglio che sia una macro di riferimento relativa e c'è una differenza tra premere invio per salvare la voce ed eliminare per cancellare la cella.
Questo commento è stato fatto dal moderatore sul sito
Ehi, codice utile. Stavo pensando se fosse possibile inserire un anello attorno alle celle che vengono modificate man mano che vengono modificate? E azzerare i cerchi ogni lunedì?
Questo commento è stato fatto dal moderatore sul sito
Ciao, Kevin,
Non c'è nessuna idea per risolvere il tuo problema, se hai qualche buona soluzione, per favore commenta qui.
Questo commento è stato fatto dal moderatore sul sito
La macro che stai chiamando dove l'hai trovata? Ho il mio nella cartella Moduli ma quando inserisco un valore in qualsiasi cella del foglio di lavoro ottengo un errore di compilazione che dice:
Variabile o procedura prevista, non modulo.

Per favore aiuto.
Questo commento è stato fatto dal moderatore sul sito
Ciao, dottor Cartwright,
Scusa se ti rispondo così tardi.
Sì, come hai detto, il codice della macro dovrebbe trovarsi nel modulo e devi cambiare il nome del codice con il tuo nome come mostrato nella seguente schermata:
Questo commento è stato fatto dal moderatore sul sito
Ciao buon pomeriggio
quisiera saber el codigo para que se active una macro cuando cambia el valor de una celda de una columna, pero este valor cambia por formula, sin que el usuario introduzca ningun valor.
Questo commento è stato fatto dal moderatore sul sito
Ciao ragazzi, sto risolvendo il seguente problema: voglio raschiare un titolo di sito Web quando il collegamento viene inserito nella colonna A e inserire questo valore nella cella pertinente (accanto ad essa) nella colonna B. Il problema sembra essere che una volta incollato il sito web nella colonna A, il codice riesegue l'intero elenco dalla colonna A2 all'"ultima riga" come definito nel codice. C'è un modo per modificare la colonna B solo una volta modificata una singola colonna A? Ad esempio, se incollo un collegamento nella colonna A36 ottengo un titolo in B36, indipendentemente dal fatto che la cella sia al centro dell'intervallo utilizzato o in fondo. Vorrei usarlo senza dover rieseguire più input così com'è attualmente; (cioè il ciclo "for i =2 all'ultima riga")? Inoltre, vorrei modificare quanto segue da Macro modulare, ovvero sub a sub privato che reagisce al cambiamento (vale a dire funzione di intersezione) dove il "target" è qualsiasi cella dell'intervallo A:A. Grazie molto!


Sotto get_title_header()



Dim wb come oggetto

Dim doc come oggetto

Dim sURL come stringa

Dim lastrow As Long

ultima riga = Sheet1.Cells(Rows.Count, "A").End(xlUp).row



Per i = 2 Per l'ultima riga

Imposta wb = CreateObject("internetExplorer.Application")

sURL = Celle(i, 1)



wb.navigate URL

wb.Visible = Falso



Mentre wb.Occupato

FaiEventi

Wend



''Documento HTML

Imposta doc = wb.document



Celle(i, 2) = doc.Titolo



In caso di errore Vai a err_clear

Celle(i, 3) = doc.GetElementsByTagName("h1")(0).innerText

err_clear:

Se Err <> 0 Allora

Err.Clear

Riprendi Avanti

End If

wb.Esci

Intervallo(Cells(i, 1), Cells(i, 3)).Columns.AutoFit

Avanti



End Sub




GRAZIE!
Questo commento è stato fatto dal moderatore sul sito
Sto cercando di automatizzare 1 cartella di lavoro (BOM) quando un'altra cartella di lavoro (Stato parti) apporta modifiche. Il file di stato delle parti si aggiorna ogni 15 minuti. Devo sapere come automatizzare una colonna specifica quando si verificano queste modifiche? Qualche idea
Questo commento è stato fatto dal moderatore sul sito
Sto usando il codice seguente per nascondere varie colonne a seconda della selezione da una casella a discesa situata nella cella C3, ma dopo che un calcolo è stato eseguito in qualsiasi punto del foglio di lavoro, TUTTE le colonne diventano NON NASCOSTE. Come posso risolvere questo problema?

Private Sub Worksheet_Change (ByVal Target As Range)

Colonne("D:F").Adatta automaticamente

Dim Proj1 come stringa
Dim Proj2 come stringa
Dim Proj3 come stringa
Dim Proj4 come stringa
Dim Proj5 come stringa
Dim Proj6 come stringa
Dim Proj7 come stringa
Dim Proj8 come stringa
Dim Proj9 come stringa
Dim Proj10 come stringa

Proj1 = ActiveWorkbook.Sheets("Progetti").Intervallo("A1").Valore
Proj2 = ActiveWorkbook.Sheets("Progetti").Intervallo("A2").Valore
Proj3 = ActiveWorkbook.Sheets("Progetti").Intervallo("A3").Valore
Proj4 = ActiveWorkbook.Sheets("Progetti").Intervallo("A4").Valore
Proj5 = ActiveWorkbook.Sheets("Progetti").Intervallo("A5").Valore
Proj6 = ActiveWorkbook.Sheets("Progetti").Intervallo("A6").Valore
Proj7 = ActiveWorkbook.Sheets("Progetti").Intervallo("A7").Valore
Proj8 = ActiveWorkbook.Sheets("Progetti").Intervallo("A8").Valore
Proj9 = ActiveWorkbook.Sheets("Progetti").Intervallo("A9").Valore
Proj10 = ActiveWorkbook.Sheets("Progetti").Intervallo("A10").Valore

Dim xRG come intervallo
Dim xHRow As Integer
Imposta xRG = Intervallo ("C3")
If Not Intersect(Target, xRG) non è niente allora

Se Target.Value = Proj1 Allora
Application.Columns("E:F").Nascosto = True
Application.Columns("D").Hidden = False

ElseIf Target.Value = Proj2 Allora
Intervallo("D:D, F:F").EntireColumn.Hidden = True
Application.Columns("E").Nascosto = False

End If
End If
End Sub
Questo commento è stato fatto dal moderatore sul sito
Questo è esattamente quello che stavo cercando. Quando un utente immette un valore in una cella, viene eseguita una semplice macro di ordinamento. La macro funziona correttamente da sola, ma ottengo un uso non valido dell'errore di proprietà utilizzando il codice suggerito.

Quale potrebbe essere il problema?
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