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

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

În mod normal, în Excel, putem apăsa tasta F5 sau butonul Executare pentru a executa codul VBA. Dar, ați încercat vreodată să rulați codul macro specific atunci când se schimbă valoarea unei celule? În acest articol, voi introduce câteva trucuri rapide pentru a face față acestei sarcini în Excel.

Rulați sau apelați macrocomanda atunci când o anumită valoare a celulei se modifică cu codul VBA

Rulați sau apelați macrocomanda atunci când orice valoare a celulei se modifică într-un interval cu cod VBA


săgeată albastru dreapta balon Rulați sau apelați macrocomanda atunci când o anumită valoare a celulei se modifică cu codul VBA

Pentru a rula un cod macro modificând valoarea unei celule, următorul cod VBA vă poate face o favoare, vă rugăm să procedați astfel:

1. Faceți clic dreapta pe fila de foaie pe care doriți să executați macrocomanda dacă se modifică valoarea 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 macrocomanda atunci când valoarea celulei se modifică:

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

doc rulează macro dacă celula se schimbă 1

notițe: În codul de mai sus, A1 este celula specifică pe care doriți să rulați codul, Mymacro este numele macro pe care doriți să îl rulați. Vă rugăm să le schimbați în funcție de nevoile dvs.

2. Și apoi salvați și închideți fereastra de cod, acum, când introduceți sau modificați valoarea în celula A1, codul specific va fi declanșat simultan.


săgeată albastru dreapta balon Rulați sau apelați macrocomanda atunci când orice valoare a celulei se modifică într-un interval cu cod VBA

Dacă doriți să rulați sau să declanșați o macrocomandă atunci când valoarea unei celule se schimbă într-un interval de celule, următorul cod vă poate ajuta.

1. Faceți clic dreapta pe fila de foaie pe care doriți să executați macrocomanda dacă se modifică valoarea 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 macrocomanda atunci când orice valoare a celulei se modifică într-un interval:

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 rulează macro dacă celula se schimbă 2

notițe: În codul de mai sus, A1: B100 este celulele specifice pe care doriți să rulați codul, Mymacro este numele macro pe care doriți să îl rulați. Vă rugăm să le schimbați în funcție de nevoile dvs.

2. Și apoi salvați și închideți fereastra de cod, acum, când introduceți sau modificați valoarea în oricare dintre celulele A1: B100, codul specific va fi executat simultan.


Eliminați toate macrocomenzile din mai multe registre de lucru

Kutools pentru Excel's Eliminați în lot toate macrocomenzile utilitarul vă poate ajuta să eliminați toate macrocomenzile din mai multe registre de lucru după cum aveți nevoie. Descărcați și probați gratuit Kutools pentru Excel acum!

Kutools pentru Excel: cu mai mult de 300 de programe de completare Excel la îndemână, încercați fără limitări în 30 de zile. Descărcați și proba gratuită acum!


Legate de articole:

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

Cum se execută macro pe baza valorii celulei î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 (17)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest modul nu funcționează pentru mine. Spune că atunci când VALOAREA celulei se schimbă, va executa codul. Găsesc că dacă TYPE în celulă funcționează, dar dacă valoarea celulei este modificată printr-o formulă, de exemplu o Counta, atunci nu se execută. Aveți o soluție pentru a executa o macrocomandă atunci când VALOAREA se modifică printr-o formulă? Mulțumesc, Wayne
Acest comentariu a fost redus la minimum de moderatorul de pe site
Aceeași problemă ca și Wayne. Orice ajutor este mult apreciat! Mulțumesc Ronnie
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna baieti,

Da, codul de mai sus este disponibil numai atunci când valoarea celulei se modifică manual, dacă trebuie să rulați automat un anumit cod de macrocomandă atunci când rezultatul formulei se modifică cu celulele relative, vă rugăm să vizitați acest articol:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Vă rugăm să încercați și să sperați răspunsul dvs.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu funcționează... și schimb manual valoarea celulei. Există vreo preconfigurare care trebuie configurată?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Testați acest lucru în procedură și utilizați-l ca parametru


Private Sub Worksheet_Change (ByVal Target As Range)

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

End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Da, descrierea spune că ar trebui să se declanșeze atunci când valoarea se schimbă, dar al doilea cod spune că este atunci când valoarea este nimic, iar primul nu se declanșează nici când o valoare se schimbă, dar dacă apăs pe F5 când mă uit la cod, vrea pentru a declanșa MyMacro, dar nu pare să reacționeze la schimbările de valoare la fel de mult ca trecerea de la nimic la ceva sau opus.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru a funcționat prima dată pentru mine folosind lista de validare a datelor care afișează text pe baza selecției listei.
Acest comentariu a fost redus la minimum de moderatorul de pe site
A funcționat grozav pentru mine! Dilema mea este că vreau să fie o macrocomandă de referință relativă și există o diferență între a apăsa enter pentru a salva intrarea și șterge pentru a șterge celula.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hei, cod util. Mă gândeam dacă este posibil să inserez un inel în jurul celulelor care sunt modificate pe măsură ce sunt schimbate? Și resetați cercurile în fiecare luni?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Kevin,
Aici nu există nicio idee pentru a vă rezolva problema, dacă aveți vreo soluție bună, vă rugăm să comentați aici.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Macrocomanda pe care o apelați unde ați localizat aceasta? Îl am pe al meu în folderul Modules, dar când pun orice valoare în orice celulă a foii de lucru, primesc o eroare de compilare care spune:
Variabilă sau procedură așteptată, nu modul.

Vă rugăm să ajute.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, DrCartwright,
Scuze că ți-am răspuns atât de târziu.
Da, așa cum ați spus, codul macro ar trebui să fie localizat în modul și trebuie să schimbați numele de cod cu propriul dvs. nume, după cum se arată în următoarea captură de ecran:
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut buna ziua
Quisiera saber el codigo pentru că se activează o macro atunci când schimbă valoarea unei celdari dintr-o columna, dar este valoare cambia prin formula, fără ca utilizatorul să introducă valori.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, băieți, rezolv următoarea problemă: vreau să răzuiesc un titlu al site-ului web atunci când linkul este inserat în coloana A și să pun această valoare în celula relevantă (de lângă ea) din coloana B. Problema pare să fie că odată ce lipesc site-ul web din coloana A, codul rulează din nou întreaga listă de la coloana A2 la „ultimul rând”, așa cum este definit în cod. Există vreo modalitate de a modifica numai coloana B odată ce o singură coloană A este modificată? Adică, dacă lipesc un link în coloana A36, primesc un titlu în B36, indiferent dacă celula se află în mijlocul intervalului utilizat sau în partea de jos. Aș dori să folosesc acest lucru fără a fi nevoie să reexerc mai multe intrări așa cum este în prezent; (adică bucla „pentru i =2 până la ultimul rând”)? De asemenea, aș dori să schimb cele de mai jos de la macromodular, adică sub la sub privat, care reacționează la schimbare (adică funcția de intersectare) unde „țintă” este orice celulă din intervalul A:A. Mulţumesc mult!


Sub get_title_header()



Dim wb ca obiect

Dim doc ca obiect

Dim sURL ca șir

Dim Lastrow As Long

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



Pentru i = 2 To lastrow

Set wb = CreateObject("internetExplorer.Application")

sURL = Celule (i, 1)



wb.navigate sURL

wb.Vizibil = Fals



În timp ce wb.Ocupat

DoEvents

Merge încet



''Document HTML

Set doc = wb.document



Cells(i, 2) = doc.Titlu



La eroare GoTo err_clear

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

err_clear:

Dacă Err <> 0 Atunci

Err.Clear

Reluați Următorul

Final, dacă

wb.Ieșire

Interval(Celele(i, 1), Cells(i, 3)).Columns.AutoFit

Apoi eu



End Sub




Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Încerc să automatizez 1 registru de lucru (BOM) când un alt registru de lucru (Starea pieselor) face modificări. Fișierul de stare Piese se actualizează la fiecare 15 minute. Trebuie să știu cum să automatizez o anumită coloană atunci când apar aceste modificări? Vreo idee
Acest comentariu a fost redus la minimum de moderatorul de pe site
Folosesc codul de mai jos pentru a ascunde diferite coloane, în funcție de selecția dintr-o casetă derulantă situată în celula C3, dar după ce se efectuează un calcul oriunde în foaia de lucru, TOATE coloanele devin NESCHISNE. Cum repar asta?

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)

Coloane("D:F").AutoFit

Dim Proj1 As String
Dim Proj2 As String
Dim Proj3 As String
Dim Proj4 As String
Dim Proj5 As String
Dim Proj6 As String
Dim Proj7 As String
Dim Proj8 As String
Dim Proj9 As String
Dim Proj10 As String

Proj1 = ActiveWorkbook.Sheets(„Proiecte”).Range(„A1”).Value
Proj2 = ActiveWorkbook.Sheets(„Proiecte”).Range(„A2”).Value
Proj3 = ActiveWorkbook.Sheets(„Proiecte”).Range(„A3”).Value
Proj4 = ActiveWorkbook.Sheets(„Proiecte”).Range(„A4”).Value
Proj5 = ActiveWorkbook.Sheets(„Proiecte”).Range(„A5”).Value
Proj6 = ActiveWorkbook.Sheets(„Proiecte”).Range(„A6”).Value
Proj7 = ActiveWorkbook.Sheets(„Proiecte”).Range(„A7”).Value
Proj8 = ActiveWorkbook.Sheets(„Proiecte”).Range(„A8”).Value
Proj9 = ActiveWorkbook.Sheets(„Proiecte”).Range(„A9”).Value
Proj10 = ActiveWorkbook.Sheets(„Proiecte”).Range(„A10”).Value

Dim xRG As Range
Dim xHRow ca număr întreg
Setați xRG = Interval ("C3")
Dacă nu se intersectează (țintă, xRG) este nimic, atunci

Dacă Target.Value = Proj1 Atunci
Application.Columns("E:F").Hidden = True
Application.Columns("D").Hidden = False

ElseIf Target.Value = Proj2 Then
Interval(„D:D, F:F”).EntireColumn.Hidden = True
Application.Columns("E").Hidden = False

Final, dacă
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Este exact ceea ce căutam. Când un utilizator introduce o valoare într-o celulă, va rula o macrocomandă simplă de sortare. Macrocomanda rulează bine de la sine, dar primesc o eroare de utilizare nevalidă a proprietății folosind codul sugerat.

Care ar putea fi problema?
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