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

Kako sprožiti ali zagnati makro s klikom na določeno celico v Excelu?

Med delom z Microsoft Excelom boste morda znali zagnati določen makro z ukaznim gumbom. Toda ali veste, kako zagnati makro s klikom na določeno celico na delovnem listu? Ta članek vam bo podrobno prikazal način sprožitve makra s klikom na določeno celico.

Sprožite ali zaženite makro s klikom na določeno celico s kodo VBA


Sprožite ali zaženite makro s klikom na določeno celico s kodo VBA

Naslednja koda VBA vam lahko pomaga zagnati makro s klikom na določeno celico v Excelu. Naredite naslednje.

1. Na delovnem listu s celico morate klikniti za zagon makra, z desno miškino tipko kliknite jeziček lista in nato kliknite Ogled kode iz kontekstnega menija.

2. V Ljubljani Microsoft Visual Basic za aplikacije okno, kopirajte in prilepite spodnji skript VBA v okno Code.

Koda VBA: S klikom na določeno celico sprožite ali zaženite makro

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("D4")) Is Nothing Then
            Call MyMacro
        End If
    End If
End Sub

Opombe:

1. V kodi je D4 celica, ki jo boste kliknili za zagon makra;

2. Zamenjajte kodno ime MojMakro z Makrojem boste zagnali v delovnem listu. Oglejte si posnetek zaslona:

3. Pritisnite druga + Q tipke hkrati, da zaprete tipko Microsoft Visual Basic za aplikacije okno.

Odslej se bo, ko kliknete celico D4 na trenutnem delovnem listu, vaš določeni makro sprožil takoj.


Sorodni članki:


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 (37)
Ocene še ni. Bodite prvi in ​​ocenite!
Ta komentar je moderator na spletnem mestu minimiziral
Sproži ali zaženi makro s klikom na določeno celico s kodo VBA, tega ni bilo mogoče doseči. Preizkusil sem ga na veliko različnih načinov, a nikoli ni dosegel obljubljenega.
Ta komentar je moderator na spletnem mestu minimiziral
Ta koda bo delovala samo, če jo postavite v modul "ThisWorkbook". Ne deluje na splošnem modulu.
ime delovnega zvezka > Objekti Microsft Excel > Ta delovni zvezek.
Ta komentar je moderator na spletnem mestu minimiziral
Ta koda bo delovala na modulu kode delovnega lista. Z desno miškino tipko kliknite zavihek lista in kliknite »Ogled kode«. To bo odprlo kodni modul samo za ta delovni list. Nato prilepite omenjeno kodo.
Ta komentar je moderator na spletnem mestu minimiziral
Če želite imeti več makrov, celice, ki izvajajo različne makre na isti strani - ali je to mogoče?
Ta komentar je moderator na spletnem mestu minimiziral
Dragi Simon,
Spodnji skript VBA vam lahko pomaga zagnati različne makre s klikom na celice na isti strani.

Zasebni pod delovni list_Sprememba izbora(ByVal Target As Range)
Če je Target.Count = 1 Potem
Če se ne seka(Target, Range("D4")) ni nič, potem pokličite MyMacro1
Če se ne seka(Target, Range("D8")) ni nič, potem pokličite MyMacro2
Če se ne seka(Target, Range("D10")) ni nič, potem pokličite MyMacro3
Konec Če
End Sub

Prosimo, dodajte vrstico "Če se ne seka (Target, Range("D10")) ni nič, potem pokličite moj makro", da zaženete več makra s klikom na celico. In spremenite imena celic in makrov v kodi glede na svoje potrebe.
Ta komentar je moderator na spletnem mestu minimiziral
V mojem Excelu ne deluje. Ali je koda pravilna?
Ta komentar je moderator na spletnem mestu minimiziral
Živjo Camila,
Oprostite za nevšečnosti. Poskusite s spodnjo kodo VBA.

Zasebni pod delovni list_Sprememba izbora(ByVal Target As Range)
Dim xRgArr kot različica
Dim xFunArr kot različica
Dim xFNum kot celo število
Dim xStr kot niz
Dim xRg As Range
xRgArr = Array("A1", "D1", "C1") 'Celice, ki se uporabljajo za sprožitev makra
xFunArr = Array("Kodno ime1", "Kodno ime2", "Kodno ime3") 'Ustrezna kodna imena
Če je Selection.Count = 1 Potem
Za xFNum = 0 do UBound(xRgArr)
Nastavi xRg = ActiveSheet.Range(xRgArr(xFNum))
Če se ne seka (Target, xRg) je potem nič
xStr = xFunArr(xFNum)
Application.Run xStr
Konec Če
Naslednji
Konec Če
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
To je delovalo odlično in mi bo prihranilo veliko časa - hvala, ker ste delili svoje znanje - zelo cenjeno!
Ta komentar je moderator na spletnem mestu minimiziral
Vesel sem, da sem lahko pomagal.
Ta komentar je moderator na spletnem mestu minimiziral
Super. Deluje dobro... Hvala....
Ta komentar je moderator na spletnem mestu minimiziral
Hi.

To deluje dobro, vendar bi rad dodal pogoj za zagon makra. Makro želim zagnati samo, če celica poleg celice, na katero kliknem, vsebuje določeno vrednost.
npr. Ko kliknem na celico F6, želim, da se makro zažene, če celica E6 vsebuje "x", če pa je celica E6 prazna, se makro ne sme zagnati.
Upam, da je to smiselno.
Hvala

tukaj je moja izvirna koda brez pogoja:


Option Explicit

Zasebni pod delovni list_Sprememba izbora(ByVal Target As Range)
Če je Selection.Count = 1 Potem
Če se ne seka(Cilj, obseg("F6:F18")) potem ni nič
Pokličite datePick
Konec Če
Konec Če
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Hi,
Naslednja koda VBA vam lahko pomaga rešiti težavo. Prosimo, poskusite in hvala za vaš komentar.

Zasebni pod delovni list_Sprememba izbora(ByVal Target As Range)
Dim xRg As Range
Če se ne seka(Cilj, obseg("F6:F18")) potem ni nič
Nastavi xRg = ActiveSheet.Cells(Target.Row, Target.Column - 1)
Če (xRg.Value = "") ali (xRg.Value <> "X"), potem zapustite Sub
Pokličite datepick
Konec Če
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Hvala, kaj pa združene celice?
Ta komentar je moderator na spletnem mestu minimiziral
Živjo Alber,
Koda ne deluje za združene celice.
Ta komentar je moderator na spletnem mestu minimiziral
uporabljam OpenOffice in sem z desno miškino tipko kliknil zavihek lista in izbrane dogodke ter nato izbral ta makro iz MyMacros.. Vendar pa dobim napako v naslednji vrstici: Če Selection.Count = 1 Nato >>> "Osnovna napaka med izvajanjem, spremenljivka ni definirana...
Ta komentar je moderator na spletnem mestu minimiziral
Hi James,
Koda deluje samo za Microsoft Office Excel. Hvala za vaš komentar.
Ta komentar je moderator na spletnem mestu minimiziral
Moja polna koda v tem makru je:


Zasebni pod delovni list_Sprememba izbora(ByVal Target As Range)

Dim val kot struna
REM val = Obseg("A2").Vrednost

Če je Selection.Count = 1 Potem
Če se ne seka(Cilj, obseg("D24")) je potem nič
REM Pokličite MyMacro
val = Obseg("D24").Vrednost
Obseg("B27").Vrednost = val
Konec Če
Konec Če
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Ta tema je zelo zanimiva in me zanima, vendar ne vem kje najti, na srečo ste ustvarili to temo, upam, da mi bodo vsi pomagali http://run-3.online
Ta komentar je moderator na spletnem mestu minimiziral
Excel 2002 (XP): Če se delovni zvezek odpre tako, da izberete »Datoteka« in pritisnete »Shift«, onemogočite makre na tem listu, je težava v tem, da če izberem »Orodja > Makro > Makri ...« lahko zaženem makro vseeno, kako rešiti?
Ta komentar je moderator na spletnem mestu minimiziral
Živjo Roger,
Kode v Excelu 2002(XP) nismo preizkusili. Zakaj ne bi uporabili novejše različice Microsoft Officea? Za vaše delo bo lažje.
Ta komentar je moderator na spletnem mestu minimiziral
Isti rezultat leta 2010.
Ta komentar je moderator na spletnem mestu minimiziral
Zakaj ne bi uporabili novejše različice, bo lažje
https://games.lol/racing/
Ta komentar je moderator na spletnem mestu minimiziral
Hvala, kaj pa več celic za klik za izvajanje več makrov.
Ta komentar je moderator na spletnem mestu minimiziral
Hi,
Poskusite s spodnjo kodo VBA.

Zasebni pod delovni list_Sprememba izbora(ByVal Target As Range)
Dim xRgArr kot različica
Dim xFunArr kot različica
Dim xFNum kot celo število
Dim xStr kot niz
Dim xRg As Range
xRgArr = Array("A1", "D1", "C1") 'Celice, ki se uporabljajo za sprožitev makra
xFunArr = Array("Kodno ime1", "Kodno ime2", "Kodno ime3") 'Ustrezna kodna imena
Če je Selection.Count = 1 Potem
Za xFNum = 0 do UBound(xRgArr)
Nastavi xRg = ActiveSheet.Range(xRgArr(xFNum))
Če se ne seka (Target, xRg) je potem nič
xStr = xFunArr(xFNum)
Application.Run xStr
Konec Če
Naslednji
Konec Če
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Hvala za to kodo. Ali je mogoče, da to deluje s klikom na celico, ki je združena z drugimi?
Ta komentar je moderator na spletnem mestu minimiziral
Živjo M.Symonds,
Koda v tem članku vam lahko naredi uslugo: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Hvala za komentar.
Ta komentar je moderator na spletnem mestu minimiziral
pozdravljeni, poskušal sem uporabiti to kodo za zagon makra za lepljenje, vendar se zdi, da ne morem ugotoviti, kako pravilno prilepiti makro.

tukaj je moj originalni Marco

Podprilepi()
'
' Prilepi makro
'

'
Obseg("B34").Izberite
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False, NoHTMLFormatting:=True
End Sub


vsaka pomoč je cenjena
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, hvala za vašo zanimivo temo. Kaj, če na primer želim klikniti D4 na List1 in videti rezultat makra na List2!F3.
Ta komentar je moderator na spletnem mestu minimiziral
Ne deluje več.
Worksheet_SelectionChange privzeto ne obstaja. To pomeni, da tega ne morete uporabiti za sprožitev makra.

Edina vdelana podpora, ki jo lahko uporabite, je navedena v spustnem seznamu "Delovni zvezek", tako da ...

Edina najbližja stvar, ki jo lahko naredite, je uporaba Workbook_SheetBeforeDoubleClick. Vendar bo vstopil v način za urejanje (še vedno ni veliko).
Ta komentar je moderator na spletnem mestu minimiziral
Zdravo CodeKiller.Worksheet_SelectionChange obstaja samo v urejevalniku Sheet(Code). Z desno tipko miške kliknite zavihek lista in kliknite Ogled kode, da aktivirate urejevalnik Sheet(Code).
Ta komentar je moderator na spletnem mestu minimiziral
Pomembno je poudariti, da se makro izvaja samo na delovnem listu.
Tisti, ki uporabljamo običajni vizualni osnovni urejevalnik, pogosto na koncu shranimo makre na drugih mestih kot na trenutnem delovnem listu.
Nobena od teh kod ne bo delovala v tej situaciji.
Ta koda se mi zdi veliko enostavnejša in mi zelo dobro deluje: 

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Če se ne seka (obseg("d1"), cilj) je potem nič
Pokliči aa
Konec Če
End Sub
Sub aa() ' vstavite svojo kodo sem
Obseg("D1").Izberi
Izbor. Kopija
Obseg("F1").Izberi
ActiveSheet.PasteEnd Sub
John wells
jnw.wells@gmail.com
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, John Wells, hvala za delitev.
Ta komentar je moderator na spletnem mestu minimiziral
Za tiste, ki želijo, da to deluje za združene celice, je najhitrejši in najbolj umazan način, da posodobite vrstico 2, kot sledi:
Možnost Eksplicitna

Zasebni pod delovni list_Sprememba izbora(ByVal Target As Range)
Če je Selection.Count > 0 Potem
Če se ne seka(Cilj, obseg("D4")) je potem nič
Pokličite MyMacro
Konec Če
Konec Če
End SubSelection.Count se uporablja za ugotavljanje, ali je bila izbira izvedena pred izvedbo preostalega makra. Če je vaš izbor sestavljen iz štirih celic, ki so bile združene, bo Selection.Count enak 4, preostala koda pa se ne bo nikoli izvršila. 2. vrstico lahko spremenite tudi na natančno število celic, ki so bile združene, vendar bo to povzročilo težave, če boste združi dodatne celice.
Ta komentar je moderator na spletnem mestu minimiziral
Grandioso! Grazie, era una vita che sognavo di poterlo fare, se può essere utile a qualcuno avendo necessità di eseguire più codici su più celle per
aumentare il numero di opzioni basta aggiungere le nuove istruzionisempre sotto la stessa option explicit altrimente ci viene detto che il riferimento al
delovni list non è univoco. Mi spiego meglio evidentemente su come ho adattato il codice con il mio esempio;

Option Explicit
Zasebni pod delovni list_Sprememba izbora(ByVal Target As Range)
Če je Selection.Count = 1 Potem
Če Not Intersect(Target, Range("Y64")) potem ni nič
Obseg("Y65:Y78").Izberi
Razpon ("Y65"). Aktiviraj
Selection.ClearContents
Obseg("Y65").Izberi
Konec Če
Če se ne seka(Cilj, obseg("A33")) je potem nič
Obseg("A33").Izberi
Izbor. Kopija
ActiveWindow.WindowState = xlMinimizirano
SendKeys "^v"
SendKeys "{BACKSPACE}"
Konec Če
Konec Če
End Sub

Grazie ancora è stata un'autentica meraviglia!

Najvišji
Ta komentar je moderator na spletnem mestu minimiziral
Nisem imel nikakršnih pričakovanj glede tega naslova, a sem bil toliko bolj presenečen. Avtor se je odlično odrezal. Nekaj ​​minut sem bral in preverjal dejstva. Vse je zelo jasno in razumljivo. Všeč so mi objave, ki zapolnjujejo vaše vrzeli v znanju. Tale je te vrste.
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni,

No encuentro la manera de hacer lo que necesito. Espero de veras que me podáis ayudar.
Necesito que se lance una MACRO al hacer clic en una celda, pero no sé en qué celda va a ser, no lo puedo comparar con (si se ha seleccionado la celda A3, por ejemplo, que se lance la acción) porque por funcionalidades del fichero, las celdas se van a mover de sitio (se han podido insertar, mas o menos filas encima). Necesitaría poder saber qué celda es la que se ha seleccionado.
Hay alguna manera de poder hacer eso?
Hvala že vnaprej.
Ta komentar je moderator na spletnem mestu minimiziral
Živjo Hola,
Naslov celice je stalen. Vse, kar lahko premaknete, je vrednost celice.
Celica, ki ste jo navedli v kodi VBA, je še vedno celica, ki sproži navedeno kodo VBA.
Tu še ni objavljenih komentarjev
Pustite vaše komentarje
Objava kot gost
×
Ocenite to objavo:
0   Znaki
Predlagane lokacije

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