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

Kako zagnati makro, ko se vrednost celice spremeni v Excelu?

Običajno lahko v Excelu za izvedbo kode VBA pritisnemo tipko F5 ali gumb Zaženi. Ali ste že kdaj poskusili zagnati določeno kodo makra, ko se vrednost celice spremeni? V tem članku bom predstavil nekaj hitrih trikov za reševanje tega dela v Excelu.

Zaženi ali pokliči makro, ko se določena vrednost celice spremeni s kodo VBA

Zaženi ali pokliči makro, ko se katera koli vrednost celice spremeni v območju s kodo VBA


puščica modri desni mehurček Zaženi ali pokliči makro, ko se določena vrednost celice spremeni s kodo VBA

Če želite zagnati kodo makra s spreminjanjem vrednosti celice, vam lahko z naslednjo kodo VBA naredite uslugo:

1. Z desno miškino tipko kliknite zavihek lista, ki ga želite zagnati, če se vrednost celice spremeni, in nato izberite Ogled kode v priročnem meniju in v odprtem Microsoft Visual Basic za aplikacije okno, kopirajte in prilepite naslednjo kodo v prazen modul:

Koda VBA: Zaženi makro, ko se spremeni vrednost celice:

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

doc zaženi makro, če se celica spremeni 1

Opombe: V zgornji kodi, A1 je določena celica, na kateri želite zagnati kodo, Moj makro je ime makra, ki ga želite zagnati. Prosimo, spremenite jih glede na vaše potrebe.

2. Nato shranite in zaprite okno kode. Ko vnesete ali spremenite vrednost v celici A1, se bo določena koda sprožila hkrati.


puščica modri desni mehurček Zaženi ali pokliči makro, ko se katera koli vrednost celice spremeni v območju s kodo VBA

Če želite zagnati ali sprožiti makro, ko se kdo v celici spremeni v obsegu celice, vam bo morda v pomoč naslednja koda.

1. Z desno miškino tipko kliknite zavihek lista, ki ga želite zagnati, če se vrednost celice spremeni, in nato izberite Ogled kode v priročnem meniju in v odprtem Microsoft Visual Basic za aplikacije okno, kopirajte in prilepite naslednjo kodo v prazen modul:

Koda VBA: Zaženite makro, ko se katera koli vrednost celice spremeni v obsegu:

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 zaženi makro, če se celica spremeni 2

Opombe: V zgornji kodi, A1: B100 so določene celice, na katerih želite zagnati kodo, Moj makro je ime makra, ki ga želite zagnati. Prosimo, spremenite jih glede na vaše potrebe.

2. Nato shranite in zaprite okno s kodo. Ko vnesete ali spremenite vrednost v kateri koli celici A1: B100, se določena koda izvede naenkrat.


Odstranite vse makre iz več delovnih zvezkov

Kutools za Excel's Paket Odstrani vse makre pripomoček vam lahko pomaga odstraniti vse makre iz več delovnih zvezkov, kot jih potrebujete. Prenesite in brezplačno preskusno različico Kutools za Excel zdaj!

Kutools za Excel: z več kot 300 priročnimi dodatki za Excel, brezplačno preizkusite brez omejitev v 30 dneh. Prenesite in brezplačno preskusite zdaj!


Sorodni članki:

Kako samodejno zagnati makro pred tiskanjem v Excelu?

Kako zagnati makro na podlagi vrednosti celice v Excelu?

Kako zagnati makro na podlagi vrednosti, izbrane s spustnega seznama v Excelu?

Kako zagnati makro s klikom na hiperpovezave v Excelu?

Kako zagnati makro, ko je list izbran iz delovnega zvezka?


Najboljša orodja za pisarniško produktivnost

Kutools za Excel rešuje večino vaših težav in poveča vašo produktivnost za 80%

  • Ponovna uporaba: Hitro vstavite zapletene formule, grafikoni in vse, kar ste že uporabljali; Šifriraj celice z geslom; Ustvari poštni seznam in pošiljanje e-pošte ...
  • Vrstica Super Formula (enostavno urejanje več vrstic besedila in formule); Bralna postavitev (enostavno branje in urejanje velikega števila celic); Prilepite v filtrirani obseg...
  • Združi celice / vrstice / stolpce brez izgube podatkov; Vsebina razdeljenih celic; Združi podvojene vrstice / stolpce... prepreči podvojene celice; Primerjaj obsege...
  • Izberite Duplicate ali Unique Vrstice; Izberite prazne vrstice (vse celice so prazne); Super Find in Fuzzy Find v mnogih delovnih zvezkih; Naključna izbira ...
  • Natančna kopija Več celic brez spreminjanja sklica formule; Samodejno ustvarjanje referenc na več listov; Vstavi oznake, Potrditvena polja in še več ...
  • Izvleček besedila, Dodaj besedilo, Odstrani po položaju, Odstrani presledek; Ustvari in natisni vmesne seštevke strani Pretvarjanje med vsebino celic in komentarji...
  • Super filter (shranite in uporabite sheme filtrov za druge liste); Napredno razvrščanje glede na mesec / teden / dan, pogostost in drugo; Poseben filter s krepko, ležeče ...
  • Združite delovne zvezke in delovne liste; Spoji tabele na podlagi ključnih stolpcev; Razdelite podatke na več listov; Paketna pretvorba xls, xlsx in PDF...
  • Več kot 300 zmogljivih funkcij. Podpira Office / Excel 2007-2021 in 365. Podpira vse jezike. Enostavna uvedba v vašem podjetju ali organizaciji. 30-dnevna brezplačna preizkusna različica vseh funkcij. 60-dnevna garancija vračila denarja.
zavihek kte 201905

Kartica Office prinaša vmesnik z zavihki v Office in poenostavi vaše delo

  • Omogočite urejanje in branje z zavihki v Wordu, Excelu, PowerPointu, Publisher, Access, Visio in Project.
  • Odprite in ustvarite več dokumentov v novih zavihkih istega okna in ne v novih oknih.
  • Poveča vašo produktivnost za 50%in vsak dan zmanjša na stotine klikov miške za vas!
dno pisarniške mize
Komentarji (17)
Ocene še ni. Bodite prvi in ​​ocenite!
Ta komentar je moderator na spletnem mestu minimiziral
Ta modul mi ne deluje. Piše, ko se spremeni VREDNOST celice, bo izvršila kodo. Ugotavljam, da če Vtipkam v celico, deluje, če pa se vrednost celice spremeni s formulo, na primer Counta, se ne izvede. Ali imate rešitev za izvajanje makra, ko se vrednost VALUE spremeni s formulo? Hvala, Wayne
Ta komentar je moderator na spletnem mestu minimiziral
Isti problem kot Wayne. Vsaka pomoč je zelo cenjena! Hvala Ronnie
Ta komentar je moderator na spletnem mestu minimiziral
Živjo družba,

Da, zgornja koda je na voljo samo, če se vrednost celice spremeni ročno, če morate samodejno zagnati določeno kodo makra, ko se rezultat formule spremeni s spremembo relativnih celic, obiščite ta članek:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Prosim poskusite in upam na vaš odgovor.
Ta komentar je moderator na spletnem mestu minimiziral
Ne deluje ... in ročno spreminjam vrednost celice. Ali obstaja kakšna predkonfiguracija, ki jo je treba nastaviti?
Ta komentar je moderator na spletnem mestu minimiziral
Preizkusite to v postopku in uporabite kot parameter


Zasebni pod delovni list_Change (ByVal Target As Range)

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

End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Ja, v opisu piše, da se mora sprožiti, ko se vrednost spremeni, toda druga koda pravi, da je to takrat, ko vrednost ni nič, prva pa se tudi ne sproži, ko se vrednost spremeni, vendar če pritisnem F5, ko pogledam kodo, hoče da sproži MyMacro, vendar se zdi, da se na spremembe vrednosti ne odzove toliko kot prehajanje iz nič v nekaj ali nasprotno.
Ta komentar je moderator na spletnem mestu minimiziral
To mi je prvič uspelo z uporabo seznama za preverjanje veljavnosti podatkov, ki prikazuje besedilo na podlagi izbire seznama.
Ta komentar je moderator na spletnem mestu minimiziral
Meni je delovalo odlično! Moja dilema je, da želim, da je relativni referenčni makro in obstaja razlika med pritiskom enter, da shranite vnos, in delete, da počistite celico.
Ta komentar je moderator na spletnem mestu minimiziral
Hej, uporabna koda. Razmišljal sem, če je mogoče vstaviti obroč okoli celic, ki se spreminjajo, ko se spreminjajo? In ponastavite kroge vsak ponedeljek?
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, Kevin,
Tukaj ni ideje za rešitev vašega problema, če imate kakšno dobro rešitev, prosim komentirajte tukaj.
Ta komentar je moderator na spletnem mestu minimiziral
Makro, ki ga kličete, kje se to nahaja? Svojo imam v mapi Moduli, vendar ko v katero koli celico delovnega lista vnesem katero koli vrednost, dobim napako pri prevajanju, ki pravi:
Pričakovana spremenljivka ali postopek, ne modul.

Prosim, pomagajte.
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, dr.Cartwright,
Oprostite, ker sem vam tako pozno odgovorila.
Da, kot ste rekli, mora biti koda makra v modulu in morate spremeniti kodno ime v svoje ime, kot je prikazano na naslednjem posnetku zaslona:
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni dober dan
quisiera sabre 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.
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni fantje, rešujem naslednjo težavo: želim postrgati naslov spletnega mesta, ko je povezava vstavljena v stolpec A, in to vrednost postaviti v ustrezno celico (zraven nje) v stolpcu B. Zdi se, da je težava v tem, da ko prilepim spletno mesto v stolpcu A, koda znova zažene celoten seznam od stolpca A2 do "zadnje vrstice", kot je opredeljeno v kodi. Ali obstaja način, da spremenite stolpec B šele, ko je spremenjen en sam stolpec A? Če v stolpec A36 prilepim povezavo, dobim naslov v B36, ne glede na to, ali je celica na sredini uporabljenega obsega ali na samem dnu. To bi rad uporabil, ne da bi mi bilo treba znova izvajati več vnosov, kot je trenutno; (tj. zanka "za i =2 do zadnje vrstice")? Prav tako bi rad spodaj spremenil iz Modularnega makra, tj. sub, v zasebni sub, ki se odziva na spremembo (tj. funkcija preseka), kjer je 'cilj' katera koli celica iz obsega A:A. Najlepša hvala!


Sub get_title_header()



Dim wb kot objekt

Zatemni doc kot objekt

Dim sURL kot niz

Dim lastrow As Long

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



Za i = 2 Do zadnjega

Nastavi wb = CreateObject("internetExplorer.Application")

sURL = celice (i, 1)



wb.navigate sURL

wb.Visible = False



Medtem ko wb.Zaseden

DoEvents

uporablja



''Dokument HTML

Nastavite doc = wb.document



Celice(i, 2) = doc.Title



Ob napaki Pojdi na err_clear

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

err_clear:

Če Err <> 0 Potem

Err.Clear

Nadaljuj Naprej

Konec Če

wb.Nehaj

Obseg(Celice(i, 1), Celice(i, 3)).Stolpci.Samodejno prilagajanje

Naslednja i



End Sub




Hvala vam!
Ta komentar je moderator na spletnem mestu minimiziral
Poskušam avtomatizirati 1 delovni zvezek (BOM), ko drug delovni zvezek (Stanje delov) spremeni. Datoteka stanja delov se posodablja vsakih 15 minut. Moram vedeti, kako avtomatizirati določen stolpec, ko pride do teh sprememb? Kaj idej
Ta komentar je moderator na spletnem mestu minimiziral
Spodnjo kodo uporabljam za skrivanje različnih stolpcev, odvisno od izbire iz spustnega polja, ki se nahaja v celici C3, vendar potem, ko se izračun izvede kjer koli na delovnem listu, VSI stolpci postanejo NESKRITI. Kako naj to popravim?

Zasebni poddelovni list_Spremeni (ByVal Target As Range)

Stolpci("D:F").Samodejno prilagajanje

Dim Proj1 kot niz
Dim Proj2 kot niz
Dim Proj3 kot niz
Dim Proj4 kot niz
Dim Proj5 kot niz
Dim Proj6 kot niz
Dim Proj7 kot niz
Dim Proj8 kot niz
Dim Proj9 kot niz
Dim Proj10 kot niz

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

Zatemni xRG kot obseg
Dim xHRow kot celo število
Nastavite xRG = domet ("C3")
Če se ne seka (Target, xRG) je potem nič

Če je Target.Value = Proj1 Potem
Application.Columns("E:F").Hidden = True
Application.Columns("D").Hidden = False

ElseIf Target.Value = Proj2 Potem
Obseg("D:D, F:F").Celoten stolpec.Hidden = True
Application.Columns("E").Hidden = False

Konec Če
Konec Če
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Točno to sem iskal. Ko uporabnik vnese vrednost v celico, se zažene preprost makro za razvrščanje. Makro deluje dobro sam, vendar dobim napako pri neveljavni uporabi lastnosti s predlagano kodo.

Kaj bi lahko bila težava?
Tu še ni objavljenih komentarjev

Sledi nam

Copyright © 2009 - www.extendoffice.com. | Vse pravice pridržane. Poganja ga ExtendOffice. | Kazalo
Microsoft in logotip Office sta blagovni znamki ali registrirani blagovni znamki družbe Microsoft Corporation v ZDA in / ali drugih državah.
Zaščiteno s Sectigo SSL