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

 Cum se execută automat macrocomanda atunci când rezultatul formulei celulare se modifică?

Presupunând că am o listă de formule bazate pe datele din coloana A și coloana B după cum se arată în următoarea captură de ecran, acum vreau să rulez automat un anumit cod macro atunci când rezultatul formulei se schimbă cu celulele sale relative. Există vreo idee bună pentru a rezolva acest job în Excel?

Rulați automat macro când rezultatul formulei de celulă se modifică cu codul VBA


Rulați automat macro când rezultatul formulei de celulă se modifică cu codul VBA

Următorul cod VBA vă poate ajuta să executați automat un anumit cod atunci când celula rezultatului formulei se modifică, vă rugăm să procedați astfel:

1. Faceți clic dreapta pe fila de foaie pe care doriți să o utilizați, apoi alegeți Afișați codul din meniul contextual, î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 automat macrocomanda atunci când rezultatul formulei celulare se modifică:

Private Sub Worksheet_Calculate()
'Updateby Extendoffice
    Dim Xrg As Range
    Set Xrg = Range("C2:C8")
    If Not Intersect(Xrg, Range("C2:C8")) Is Nothing Then
    Macro1
    End If
End Sub

notițe: În codul de mai sus, C2: C8 este gama de celule de formulă pe care doriți să o utilizați ,maco1 este numele macro-ului pe care doriți să îl rulați automat. Vă rugăm să îl modificați după nevoile dvs.

2. Apoi salvați și închideți această fereastră de cod, acum, când datele din intervalul A2: B8 se modifică pentru a provoca modificarea rezultatului formulei, codul dvs. macro specific este declanșat simultan.


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 (10)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc mult! Asta chiar m-a ajutat.
Există vreo metodă pentru a prelua adresa celulei modificate (cu formula, adică coloana C în acest exemplu).
Multumesc.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ce rost are starea? Întotdeauna va reveni adevărat... cu alte cuvinte: va funcționa fără el. Aceasta se execută și ori de câte ori orice celule de pe foaie își schimbă valoarea.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Deci, care este numele meu macro. unde pot găsi numele meu macro?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Cenk,
Numele macrocomenzii este codul macro pe care l-ați inserat în fișierul Excel și trebuie doar să schimbați Macro1 din codul de mai sus cu al dvs.
De exemplu, inserez un cod aici, iar numele macrocomenzii este: ColorCompanyDuplicates

Sub ColorCompanyDuplicates()
'Actualizare de Extendoffice 20160704
Dim xRg As Range
Dim xTxt ca șir
Dim xCell As Range
Dim xChar As String
Dim xCellPre As Range
Dim xCIndex As Long
Dim xCol As Collection
Dim I As Long
La data de eroare CV următoare
Dacă ActiveWindow.RangeSelection.Count > 1, atunci
xTxt = ActiveWindow.RangeSelection.AddressLocal
Altfel
xTxt = ActiveSheet.UsedRange.AddressLocal
Final, dacă
Set xRg = Application.InputBox(„vă rugăm să selectați intervalul de date:”, „Kutools pentru Excel”, xTxt, , , , , 8)
Dacă xRg nu este nimic, ieșiți din sub
xCIndex = 2
Set xCol = New Collection
Pentru fiecare xCell în xRg
La data de eroare CV următoare
xCol.Add xCell, xCell.Text
Dacă Err.Number = 457 Atunci
xCIndex = xCIndex + 1
Setați xCellPre = xCol(xCell.Text)
Dacă xCellPre.Interior.ColorIndex = xlNone, atunci xCellPre.Interior.ColorIndex = xCIndex
xCell.Interior.ColorIndex = xCellPre.Interior.ColorIndex
ElseIf Err.Number = 9 Atunci
MsgBox „Prea multe companii duplicat!”, vbCritical, „Kutools pentru Excel”
Ieșiți din Sub
Final, dacă
La eroare GoTo 0
Pagina Următoare →
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
scuze, nu funcționează, funcționează dacă pun datele manual. dar vreau să lucrez automat, deoarece datele mele se actualizează prin rand calcaulate
Acest comentariu a fost redus la minimum de moderatorul de pe site
„Set Xrg = Range(”C2:C8”)
Dacă nu se intersectează(Xrg, Range("C2:C8")) nu este nimic, atunci"
această condiție este ÎNTOTDEAUNA întâlnită....
Are sens ???
Sau este ceva ce nu am inteles?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Așa este, ai rezolvat această problemă și ai putea să-mi împărtășești, te rog?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună băieți,
Am folosit următorul cod pentru această problemă, sper că va ajuta pe cineva:

Private Sub Worksheet_Calculate()
Valoare veche statică
Dacă Range("MyNamedRange") <> oldValue Atunci
Cod aici
oldValue = Range("MyNamedRange").Value
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună băieți,
Mai jos este codul și vreau să blochez celulele A2 și A3 după ce celula A1 (A1 = B1+C1) se schimbă în schimbarea rezultatelor fie B1, fie C1 sau ambele. Dar nu funcționează. Poate cineva să ajute cu asta, vă rog?

Private Sub Worksheet_Calculate()

Dim sPass
sPass = „123”
Dim rng As Range
Set rng = [A2:A3]
Dacă nu se intersectează (rng, [A1]) este nimic, atunci
Cu ActiveSheet
.Unprotect Password:=sPass
.Cells.Locked = Fals
Valoare veche statică
Dacă Range("A1") <> oldValue Atunci
rng.Locked = Adevărat
.Protect Password:=sPass
oldValue = Range("A1").Value

Final, dacă
Se termina cu

Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,

Știu că acesta este un subiect vechi, dar cum să existe o combinație între această metodă de calcul și aceasta: https://www.extendoffice.com/documents/excel/1895-excel-record-date-and-time-when-cell-changes.html?

Scopul este de a înregistra o dată pe următoarea celulă de fiecare dată când valorile calculate se modifică pentru fiecare celulă dintr-o coloană.

Salutari,
James
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