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

Hur kör man makro när cellvärdet ändras i Excel?

Normalt kan vi i Excel trycka på F5-tangenten eller Kör-knappen för att köra VBA-koden. Men har du någonsin försökt köra den specifika makrokoden när ett cellvärde ändras? Den här artikeln kommer jag att presentera några snabba knep för att hantera detta jobb i Excel.

Kör eller anropa makro när ett visst cellvärde ändras med VBA-kod

Kör eller anropa makro när något cellvärde ändras i ett intervall med VBA-kod


pil blå höger bubbla Kör eller anropa makro när ett visst cellvärde ändras med VBA-kod

För att köra en makrokod genom att ändra ett cellvärde kan följande VBA-kod göra dig en tjänst, gör så här:

1. Högerklicka på arkfliken som du vill utföra makrot om cellvärdet ändras och välj sedan Visa kod från snabbmenyn och i den öppnade Microsoft Visual Basic för applikationer fönster, kopiera och klistra in följande kod i den tomma modulen:

VBA-kod: Kör makro när cellvärdet ändras:

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

doc kör makro om cell ändras 1

Anmärkningar: I ovanstående kod, A1 är den specifika cell som du vill köra koden baserat på, Mymacro är det makronamn som du vill köra. Ändra dem efter dina behov.

2. Och spara och stäng sedan kodfönstret, nu när du anger eller ändrar värde i cell A1 kommer den specifika koden att utlösas på en gång.


pil blå höger bubbla Kör eller anropa makro när något cellvärde ändras i ett intervall med VBA-kod

Om du vill köra eller utlösa ett makro när någon cellvärde ändras i ett cellområde kan följande kod hjälpa dig.

1. Högerklicka på arkfliken som du vill utföra makrot om cellvärdet ändras och välj sedan Visa kod från snabbmenyn och i den öppnade Microsoft Visual Basic för applikationer fönster, kopiera och klistra in följande kod i den tomma modulen:

VBA-kod: Kör makro när något cellvärde ändras inom ett område:

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 om cell ändras 2

Anmärkningar: I ovanstående kod, A1: B100 är de specifika cellerna som du vill köra koden baserat på, Mymacro är det makronamn som du vill köra. Ändra dem efter dina behov.

2. Och spara och stäng sedan kodfönstret, när du anger eller ändrar värde i någon cell i A1: B100 kommer den specifika koden att köras på en gång.


Ta bort alla makron från flera arbetsböcker

Kutools för Excel's Batch Ta bort alla makron verktyget kan hjälpa dig att ta bort alla makron från flera arbetsböcker efter behov. Ladda ner och testa gratis Kutools för Excel nu!

Kutools för Excel: med mer än 300 praktiska Excel-tillägg, gratis att prova utan begränsning på 30 dagar. Ladda ner och testa gratis nu!


Relaterade artiklar:

Hur kör man makro automatiskt innan man skriver ut i Excel?

Hur kör man makro baserat på cellvärde i Excel?

Hur kör man makro baserat på värde valt från listrutan i Excel?

Hur kör man makro genom att klicka på hyperlänkar i Excel?

Hur kör man makro när ark väljs från en arbetsbok?


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (17)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Den här modulen fungerar inte för mig. Det står att när cellens värde ändras kommer den att exekvera koden. Jag upptäcker att om jag TYPER in i cellen fungerar det, men om värdet på cellen ändras med en formel, till exempel en Counta, så körs den inte. Har du en lösning för att köra ett makro när VÄRDET ändras genom en formel? Tack, Wayne
Denna kommentar minimerades av moderatoren på webbplatsen
Samma problem som Wayne. All hjälp uppskattas mycket! Tack Ronnie
Denna kommentar minimerades av moderatoren på webbplatsen
Hej grabbar,

Ja, ovanstående kod är endast tillgänglig när cellvärdet ändras manuellt, om du behöver köra en specifik makrokod automatiskt när formelresultatet ändras med dess relativa celler ändras, vänligen besök den här artikeln:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Vänligen prova det och hoppas ditt svar.
Denna kommentar minimerades av moderatoren på webbplatsen
Det fungerar inte... & jag ändrar cellvärdet manuellt. Finns det någon förkonfiguration som måste ställas in?
Denna kommentar minimerades av moderatoren på webbplatsen
Testa detta i proceduren och använd som parameter


Private Sub Worksheet_Change (ByVal Target As Range)

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

End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Ja, beskrivningen säger att det ska utlösas när värdet ändras, men den andra koden säger att det är när värdet inte är något, och den första utlöses inte när ett värde ändras heller, men om jag trycker på F5 när jag tittar på koden, vill den för att trigga MyMacro, men verkar inte reagera så mycket på värdeförändringar som att gå från ingenting till något eller motsatsen.
Denna kommentar minimerades av moderatoren på webbplatsen
Detta fungerade första gången för mig med datavalideringslista som visar text baserat på listvalet.
Denna kommentar minimerades av moderatoren på webbplatsen
Funkade jättebra för mig! Mitt dilemma är att jag vill att det ska vara ett relativt referensmakro och det är skillnad mellan att trycka på enter för att spara posten och delete för att rensa cellen.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, användbar kod. Jag funderade på om det gick att sätta in en ring runt cellerna som ändras allt eftersom de ändras? Och återställa cirklarna varje måndag?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Kevin,
Här finns ingen idé för att lösa ditt problem, om du har någon bra lösning, vänligen kommentera här.
Denna kommentar minimerades av moderatoren på webbplatsen
Makrot som du anropar, var har du detta placerat? Jag har min i moduler-mappen, men när jag lägger något värde i någon cell i kalkylbladet får jag ett kompileringsfel som säger:
Förväntad variabel eller procedur, inte modul.

Snälla hjälp.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, DrCartwright,
Förlåt för att jag svarade dig så sent.
Ja, som du sa, makrokoden bör finnas i modulen, och du måste ändra kodnamnet till ditt eget namn enligt följande skärmdump:
Denna kommentar minimerades av moderatoren på webbplatsen
Hej god eftermiddag
quisiera sabre el codigo para que se aktiv una makro cuando cambia el valor de una celda de una columna, pero este valor cambia por formula,sin que el usuario introduzca ningun valor.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej killar, jag löser följande problem: Jag vill skrapa en titel på webbplatsen när länken infogas i kolumn A och sätta detta värde i relevant cell (bredvid den) i kolumn B. Problemet verkar vara att när jag klistrar in webbplats i kolumn A, kör koden om hela listan från kolumn A2 till "sista raden" som definieras i koden. Finns det något sätt att bara ändra kolumn B när en enda kolumn A har modifierats? Dvs om jag klistrar in en länk i kolumn A36 får jag en rubrik i B36, oavsett om cellen är i mitten av det använda intervallet eller längst ner. Jag skulle vilja använda detta utan att behöva köra flera ingångar igen som det ser ut för närvarande; (dvs slingan "för i =2 till sista raden")? Jag skulle också vilja ändra nedanstående från modulärt makro dvs sub till privat sub som reagerar på förändring (dvs skärningsfunktion) där "målet" är valfri cell från A:A-intervallet. Tack så mycket!


Sub get_title_header()



Dim wb som objekt

Dim doc som objekt

Dim sURL som sträng

Dimma sista raden As Long

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



För i = 2 Till sista raden

Ställ in wb = CreateObject("internetExplorer.Application")

sURL = Cells(i, 1)



wb.navigate sURL

wb.Visible = Falskt



Medan wb.Busy

GörEvents

Wend



''HTML-dokument

Ställ in doc = wb.document



Cells(i, 2) = doc.Title



Vid fel GoTo err_clear

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

err_clear:

Om Err <> 0 Då

Err.Clear

Fortsätt Nästa

End If

wb.Avsluta

Område(Cells(i, 1), Cells(i, 3)).Kolumner.Autoanpassa

Nästa jag



End Sub




Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Jag försöker automatisera 1 arbetsbok (BOM) när en annan arbetsbok (Parts Status) gör ändringar. Delarstatusfilen uppdateras var 15:e minut. Jag behöver veta hur man automatiserar en specifik kolumn när dessa ändringar inträffar? Några idéer
Denna kommentar minimerades av moderatoren på webbplatsen
Jag använder koden nedan för att dölja olika kolumner beroende på valet från en rullgardinsmeny som finns i cell C3, men efter att en beräkning utförts var som helst i kalkylbladet, blir ALLA kolumner OHIDDA. Hur fixar jag detta?

Privata delarkivsförändring (ByVal-mål som område)

Kolumner("D:F"). Autopass

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

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
Ställ in xRG = Range("C3")
Om inte skära (Target, xRG) är ingenting då

Om Target.Value = Proj1 Då
Application.Columns("E:F").Hidden = True
Application.Columns("D").Hidden = False

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

End If
End If
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Det här är precis vad jag letade efter. När en användare anger ett värde i en cell körs ett enkelt sorteringsmakro. Makrot körs bra av sig själv men jag får ett felmeddelande om ogiltig användning av egenskapen med den föreslagna koden.

Vad kan vara problemet?
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL