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

Hvordan køres makro, når celleværdien ændres i Excel?

Normalt kan vi i Excel trykke på F5-tasten eller Kør-knappen for at udføre VBA-koden. Men har du nogensinde prøvet at køre den specifikke makrokode, når en celleværdi ændres? Denne artikel vil jeg introducere nogle hurtige tricks til at håndtere dette job i Excel.

Kør eller ring makro, når en bestemt celleværdi ændres med VBA-kode

Kør eller ring makro, når en celleværdi ændres i et område med VBA-kode


pil blå højre boble Kør eller ring makro, når en bestemt celleværdi ændres med VBA-kode

For at køre en makrokode ved at ændre en celleværdi, kan følgende VBA-kode gøre dig en tjeneste, gør venligst som denne:

1. Højreklik på arkfanen, som du vil udføre makroen, hvis celleværdien ændres, og vælg derefter Vis kode fra genvejsmenuen og i det åbnede Microsoft Visual Basic til applikationer vindue, kopier og indsæt følgende kode i det tomme modul:

VBA-kode: Kør makro, når celleværdien ændres:

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

doc kør makro, hvis celle ændres 1

Bemærk: I ovenstående kode, A1 er den specifikke celle, som du vil køre koden baseret på, Mymacro er det makroenavn, du vil køre. Skift dem til dit behov.

2. Og gem og luk derefter kodevinduet, når du indtaster eller ændrer værdi i celle A1, udløses den specifikke kode med det samme.


pil blå højre boble Kør eller ring makro, når en celleværdi ændres i et område med VBA-kode

Hvis du vil køre eller udløse en makro, når nogen celleværdi ændres i et celleområde, kan følgende kode hjælpe dig.

1. Højreklik på arkfanen, som du vil udføre makroen, hvis celleværdien ændres, og vælg derefter Vis kode fra genvejsmenuen og i det åbnede Microsoft Visual Basic til applikationer vindue, kopier og indsæt følgende kode i det tomme modul:

VBA-kode: Kør makro, når en hvilken som helst celleværdi ændres i et 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 kør makro, hvis celle ændres 2

Bemærk: I ovenstående kode, A1: B100 er de specifikke celler, som du vil køre koden baseret på, Mymacro er det makroenavn, du vil køre. Skift dem til dit behov.

2. Og gem derefter og luk kodevinduet, når du indtaster eller ændrer værdi i en hvilken som helst celle i A1: B100, udføres den specifikke kode med det samme.


Fjern alle makroer fra flere projektmapper

Kutools til Excel's Batch Fjern alle makroer hjælpeprogram kan hjælpe dig med at fjerne alle makroer fra flere projektmapper, som du har brug for. Download og gratis prøveversion Kutools til Excel nu!

Kutools til Excel: med mere end 300 praktiske Excel-tilføjelsesprogrammer, gratis at prøve uden begrænsning på 30 dage. Download og gratis prøveversion nu!


Relaterede artikler:

Hvordan køres makro automatisk inden udskrivning i Excel?

Hvordan køres makro baseret på celleværdi i Excel?

Hvordan køres makro baseret på værdi valgt fra rullelisten i Excel?

Hvordan køres makro ved at klikke på hyperlinks i Excel?

Hvordan køres makro, når ark er valgt fra en projektmappe?


De bedste Office-produktivitetsværktøjer

Kutools til Excel løser de fleste af dine problemer og øger din produktivitet med 80%

  • Genbruge: Indsæt hurtigt komplekse formler, diagrammer og alt, hvad du har brugt før; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner uden at miste data; Split celler indhold; Kombiner duplikerede rækker / kolonner... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Mere end 300 kraftfulde funktioner. Understøtter Office / Excel 2007-2021 og 365. Understøtter alle sprog. Nem implementering i din virksomhed eller organisation. Fuld funktioner 30-dages gratis prøveperiode. 60 dages pengene tilbage garanti.
kte-fane 201905

Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund
Sorter kommentarer efter
Kommentarer (17)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
Dette modul virker ikke for mig. Den siger, at når cellens værdi ændres, vil den udføre koden. Jeg finder ud af, at hvis jeg TAVER ind i cellen, virker det, men hvis værdien af ​​cellen ændres af en formel, for eksempel en Counta, så udføres den ikke. Har du en løsning til at udføre en makro, når VÆRDI ændres gennem en formel? Tak, Wayne
Denne kommentar blev minimeret af moderatoren på webstedet
Samme problem som Wayne. Enhver hjælp meget værdsat! Tak Ronnie
Denne kommentar blev minimeret af moderatoren på webstedet
Hej gutter,

Ja, ovenstående kode er kun tilgængelig, når celleværdien ændres manuelt. Hvis du har brug for at køre en specifik makrokode automatisk, når formelresultatet ændres med dets relative celler, kan du besøge denne artikel:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Prøv det, og håber dit svar.
Denne kommentar blev minimeret af moderatoren på webstedet
Det virker ikke... & jeg ændrer celleværdien manuelt. Er der nogen prækonfiguration, der skal konfigureres?
Denne kommentar blev minimeret af moderatoren på webstedet
Test dette i proceduren og brug som parameter


Private Sub Worksheet_Change (ByVal Target As Range)

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

End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Ja, beskrivelsen siger, at den skal udløses, når værdien ændrer sig, men den anden kode siger, at det er, når værdien ikke er noget, og den første udløses heller ikke, når en værdi ændres, men hvis jeg trykker på F5, når jeg ser på koden, vil den at udløse MyMacro, men ser ikke ud til at reagere på værdiændringer så meget som at gå fra ingenting til noget eller modsat.
Denne kommentar blev minimeret af moderatoren på webstedet
Dette virkede første gang for mig ved at bruge datavalideringsliste, som viser tekst baseret på listevalg.
Denne kommentar blev minimeret af moderatoren på webstedet
Fungerede fantastisk for mig! Mit dilemma er, at jeg vil have det til at være en relativ referencemakro, og der er forskel på at trykke på enter for at gemme posten og delete for at rydde cellen.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, nyttig kode. Jeg tænkte på, om det var muligt at sætte en ring rundt om de celler, der ændres efterhånden som de ændres? Og nulstille cirklerne hver mandag?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Kevin,
Her er ingen idé til at løse dit problem, hvis du har en god løsning, så kommenter venligst her.
Denne kommentar blev minimeret af moderatoren på webstedet
Den makro, du kalder, hvor har du denne placeret? Jeg har min i mappen Moduler, men når jeg sætter en værdi i en hvilken som helst celle i regnearket, får jeg en kompileringsfejl, der siger:
Forventet variabel eller procedure, ikke modul.

Please hjælp.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, DrCartwright,
Beklager, at jeg svarer dig så sent.
Ja, som du sagde, skal makrokoden være placeret i modulet, og du skal ændre kodenavnet til dit eget navn som vist på følgende skærmbillede:
Denne kommentar blev minimeret af moderatoren på webstedet
Hej god aften
quisiera sabre el codigo para que se aktiv una makro cuando cambia el valor de una celda de una columna, men este valor cambia por formel,sin que el usuario introduzca ningun valor.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej gutter, jeg løser følgende problem: Jeg vil skrabe en titel på webstedet, når linket er indsat i kolonne A og sætte denne værdi til den relevante celle (ved siden af) i kolonne B. Problemet ser ud til at være, at når jeg indsætter hjemmeside i kolonne A, gentager koden hele listen fra kolonne A2 til "sidste række" som defineret i koden. Er der nogen måde kun at ændre kolonne B, når en enkelt kolonne A er ændret? Dvs. hvis jeg indsætter et link i kolonne A36, får jeg en titel i B36, uanset om cellen er i midten af ​​det brugte område eller helt nederst. Jeg vil gerne bruge dette uden at skulle køre flere input igen, som det ser ud i øjeblikket; (dvs. løkken "for i =2 til sidste række")? Jeg vil også gerne ændre nedenstående fra modulær makro dvs. sub til privat sub, der reagerer på forandring (dvs. skæringsfunktion), hvor 'målet' er en hvilken som helst celle fra A:A-området. Mange tak!


Sub get_title_header()



Dim wb som objekt

Dim doc som objekt

Dim sURL som streng

Dæmp sidste række så længe

sidste række = Ark1.Cells(Rows.Count, "A").End(xlUp).row



For i = 2 Til sidste række

Indstil wb = CreateObject("internetExplorer.Application")

sURL = Celler(i, 1)



wb.navigate sURL

wb.Synlig = Falsk



Mens wb.Optaget

Doevents

Wend



''HTML-dokument

Indstil doc = wb.document



Celler(i, 2) = doc.Titel



Ved fejl GoTo err_clear

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

err_clear:

Hvis Err <> 0 Så

Err.Clear

Genoptag næste

End If

wb.Afslut

Område(Cells(i, 1), Cells(i, 3)). Kolonner.Autotilpas

Næste jeg



End Sub




Tak!
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg forsøger at automatisere 1 projektmappe (BOM), når en anden projektmappe (Parts Status) foretager ændringer. Reservedelsstatusfilen opdateres hvert 15. minut. Jeg har brug for at vide, hvordan man automatiserer en specifik kolonne, når disse ændringer sker? Nogle ideer
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg bruger koden nedenfor til at skjule forskellige kolonner afhængigt af valget fra en drop-down boks placeret i celle C3, men efter en beregning er udført hvor som helst i regnearket, bliver ALLE kolonner USKJULTE. Hvordan løser jeg dette?

Privat Sub Worksheet_Change (ByVal Target As Range)

Kolonner("D:F"). Autotilpas

Dim Proj1 Som streng
Dim Proj2 Som streng
Dim Proj3 Som streng
Dim Proj4 Som streng
Dim Proj5 Som streng
Dim Proj6 Som streng
Dim Proj7 Som streng
Dim Proj8 Som streng
Dim Proj9 Som streng
Dim Proj10 Som streng

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

Dim xRG As Range
Dim xHRow Som heltal
Indstil xRG = Range("C3")
Hvis ikke skærer (mål, xRG) er ingenting, så

Hvis Target.Value = Proj1 Så
Application.Columns("E:F").Hidden = Sand
Application.Columns("D").Hidden = False

ElseIf Target.Value = Proj2 Så
Range("D:D, F:F").EntireColumn.Hidden = Sand
Application.Columns("E").Hidden = False

End If
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Det er præcis, hvad jeg ledte efter. Når en bruger indtaster en værdi i en celle, kører en simpel sorteringsmakro. Makroen kører fint alene, men jeg får en ugyldig brug af egenskabsfejl ved at bruge den foreslåede kode.

Hvad kan problemet være?
Der er endnu ingen kommentarer her
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder

Følg os

Copyright © 2009 - www.extendoffice.com. | Alle rettigheder forbeholdes. Drevet af ExtendOffice. | | Sitemap
Microsoft og Office-logoet er varemærker eller registrerede varemærker tilhørende Microsoft Corporation i USA og / eller andre lande.
Beskyttet af Sectigo SSL