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

Hvordan udløses eller køres en makro ved at klikke på en bestemt celle i Excel?

Mens du arbejder med Microsoft Excel, ved du muligvis, hvordan du kører en bestemt makro med en kommandoknap. Men ved du, hvordan du kører en makro ved blot at klikke på en bestemt celle i et regneark? Denne artikel viser metoden til at udløse en makro ved at klikke på en bestemt celle i detaljer.

Trigger eller kør en makro ved at klikke på en bestemt celle med VBA-kode


Trigger eller kør en makro ved at klikke på en bestemt celle med VBA-kode

Følgende VBA-kode kan hjælpe dig med at køre en makro ved at klikke på en bestemt celle i Excel. Gør som følger.

1. På regnearket med cellen skal du klikke for at køre en makro, højreklik på arkfanen, og klik derefter på Vis kode fra kontekstmenuen.

2. i Microsoft Visual Basic til applikationer vindue, kopier og indsæt nedenstående VBA-script i kodevinduet.

VBA-kode: Udløs eller kør en makro ved at klikke på en bestemt celle

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

Noter:

1. I koden er D4 den celle, du vil klikke på for at køre makro;

2. Udskift kodenavnet MyMacro med makroen kører du i regnearket. Se skærmbillede:

3. Tryk på andre + Q taster samtidigt for at lukke Microsoft Visual Basic til applikationer vindue.

Fra nu af, når du klikker på celle D4 i det aktuelle regneark, udløses din angivne makro med det samme.


Relaterede artikler:


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 (37)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
Udløs eller kør en makro ved at klikke på en specifik celle med VBA-kode, kunne ikke få dette til at virke. Jeg prøvede det på mange forskellige måder, men det nåede aldrig, hvad der blev lovet.
Denne kommentar blev minimeret af moderatoren på webstedet
Denne kode virker kun, hvis du placerer den i modulet "ThisWorkbook". Det virker ikke på et generelt modul.
projektmappenavn > Microsft Excel-objekter > ThisWorkbook.
Denne kommentar blev minimeret af moderatoren på webstedet
Denne kode fungerer på regnearkskodemodulet. Du skal højreklikke på arkfanen og klikke på 'Se kode'. Dette vil kun åbne kodemodul for det pågældende regneark. Indsæt derefter den nævnte kode.
Denne kommentar blev minimeret af moderatoren på webstedet
Hvis du vil have flere makroer, celler, der kører forskellige makroer på samme side - er det muligt?
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Simon,
Nedenstående VBA-script kan hjælpe dig med at køre forskellige makroer ved at klikke på celler på samme side.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Hvis Target.Count = 1 Så
Hvis ikke skærer (mål, rækkevidde("D4")) er ingenting, så ring til MyMacro1
Hvis ikke skærer (mål, rækkevidde("D8")) er ingenting, så ring til MyMacro2
Hvis ikke skærer (mål, rækkevidde("D10")) er ingenting, så ring til MyMacro3
End If
End Sub

Tilføj venligst linjen "If Not Intersect(Target, Range("D10")) Is Nothing Then Call MyMacro" for at køre mere makro ved at klikke på cellen. Og ændre celle- og makronavne i koden baseret på dine behov.
Denne kommentar blev minimeret af moderatoren på webstedet
Det virker ikke på min Excel. Er koden korrekt?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Camila,
Beklager ulejligheden. Prøv nedenstående VBA-kode.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xRgArr som variant
Dim xFunArr som variant
Dim xFNum Som heltal
Dim xStr As String
Dim xRg As Range
xRgArr = Array("A1", "D1", "C1") 'Celler, der bruges til at udløse makro
xFunArr = Array("Kodenavn1", "Kodenavn2", "Kodenavn3") 'De tilsvarende kodenavne
Hvis Selection.Count = 1 Så
For xFNum = 0 Til UBound(xRgArr)
Indstil xRg = ActiveSheet.Range(xRgArr(xFNum))
Hvis ikke skærer (mål, xRg) er ingenting, så
xStr = xFunArr(xFNum)
Application.Kør xStr
End If
Næste
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Dette fungerede perfekt og vil spare mig for en masse tid - tak fordi du deler din viden - meget værdsat!
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg er glad for, at jeg kunne hjælpe.
Denne kommentar blev minimeret af moderatoren på webstedet
Store. Det fungerer godt... Tak...
Denne kommentar blev minimeret af moderatoren på webstedet
Hej.

Jeg har dette fungerer godt, men vil gerne tilføje en betingelse til at køre makroen. Jeg vil kun køre makroen, hvis cellen ved siden af ​​cellen, jeg klikker på, indeholder en bestemt værdi.
f.eks. Når jeg klikker på celle F6, vil jeg have makroen til at køre, hvis celle E6 indeholder "x", men hvis celle E6 er tom, må makroen ikke køre.
Håber det fornuftigt.
Tak

her er min originale kode uden betingelsen:


Mulighed for eksplicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Hvis Selection.Count = 1 Så
Hvis ikke skærer (Mål, rækkevidde("F6:F18")) er ingenting, så
Ring til datePick
End If
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
Følgende VBA-kode kan hjælpe dig med at løse problemet. Prøv det og tak for din kommentar.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xRg As Range
Hvis ikke skærer (Mål, rækkevidde("F6:F18")) er ingenting, så
Indstil xRg = ActiveSheet.Cells(Target.Row, Target.Column - 1)
Hvis (xRg.Value = "") Eller (xRg.Value <> "X") Afslut Sub
Ring til datepick
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Tak, men hvad med flettede celler?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Alber,
Koden virker ikke for flettede celler.
Denne kommentar blev minimeret af moderatoren på webstedet
jeg bruger OpenOffice og har højreklikket på arkfanen og valgt hændelser og derefter valgt denne makro fra MyMacros.. Jeg får dog en fejl på følgende linje: Hvis Selection.Count = 1 Så >>> "Basic runtime error, variabel ikke defineret...
Denne kommentar blev minimeret af moderatoren på webstedet
Hej James,
Koden virker kun til Microsoft Office Excel. Tak for din kommentar.
Denne kommentar blev minimeret af moderatoren på webstedet
Min fulde kode i denne makro er:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim val As String
REM-værdi = Range("A2").Værdi

Hvis Selection.Count = 1 Så
Hvis ikke skærer (mål, rækkevidde("D24")) er ingenting så
REM Ring til MyMacro
val = Range("D24").Værdi
Range("B27").Værdi = værdi
End If
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Dette emne er meget interessant, og jeg er interesseret, men ved ikke, hvor jeg kan finde, heldigvis opretter du dette emne, håber alle vil hjælpe mig http://run-3.online
Denne kommentar blev minimeret af moderatoren på webstedet
Excel 2002 (XP): Hvis en projektmappe åbnes ved at vælge "Filer" og trykke på "Shift", deaktiverer det makroer i det ark, problemet er, at hvis jeg vælger "Værktøjer > Makro > Makroer..." kan jeg køre makroen alligevel, hvordan løser man det?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej roger
Vi har ikke testet koden i Excel 2002(XP). Hvorfor ikke bruge den nyere version af Microsoft Office? Det bliver nemmere for dit arbejde.
Denne kommentar blev minimeret af moderatoren på webstedet
Samme resultat i 2010.
Denne kommentar blev minimeret af moderatoren på webstedet
Hvorfor ikke bare bruge en nyere version, det bliver nemmere
https://games.lol/racing/
Denne kommentar blev minimeret af moderatoren på webstedet
Tak, men hvad med flere celler til at klikke for at køre flere makroer.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
Prøv nedenstående VBA-kode.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xRgArr som variant
Dim xFunArr som variant
Dim xFNum Som heltal
Dim xStr As String
Dim xRg As Range
xRgArr = Array("A1", "D1", "C1") 'Celler, der bruges til at udløse makro
xFunArr = Array("Kodenavn1", "Kodenavn2", "Kodenavn3") 'De tilsvarende kodenavne
Hvis Selection.Count = 1 Så
For xFNum = 0 Til UBound(xRgArr)
Indstil xRg = ActiveSheet.Range(xRgArr(xFNum))
Hvis ikke skærer (mål, xRg) er ingenting, så
xStr = xFunArr(xFNum)
Application.Kør xStr
End If
Næste
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Tak for denne kode. Er det muligt at få dette til at virke ved at klikke på en celle, der er flettet med andre?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej M. Symonds,
Koden i denne artikel kan gøre dig en tjeneste: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Tak for din kommentar.
Denne kommentar blev minimeret af moderatoren på webstedet
hej, jeg prøvede at bruge denne kode til at køre en indsæt-makro, men jeg kan ikke finde ud af, hvordan man indsætter makroen korrekt.

her er min originale Marco

Sub Paste()
'
' Indsæt makro
'

'
Range("B34"). Vælg
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
Falsk, NoHTMLFormatting:=True
End Sub


Enhver hjælp er værdsat
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Tak for dit interessante emne. Hvad hvis jeg for eksempel vil klikke på D4 i Ark1 og se resultatet af Makro i Ark2!F3.
Denne kommentar blev minimeret af moderatoren på webstedet
Virker ikke længere.
Worksheet_SelectionChange eksisterer ikke som standard. Det betyder, at du ikke kan bruge det til at udløse en makro.

Den eneste indlejrede undergruppe, du kan bruge, henvises til i rullelisten "Arbejdsbog", så...

Det eneste, du nærmest kan gøre, er at bruge Workbook_SheetBeforeDoubleClick. Men det vil gå ind i redigeringstilstand (stadig ikke en big deal).
Denne kommentar blev minimeret af moderatoren på webstedet
Hej CodeKiller.Worksheet_SelectionChange findes kun i Sheet(Code)-editoren. Højreklik på arkfanen, og klik på Vis kode for at aktivere Sheet(Code)-editoren.
Denne kommentar blev minimeret af moderatoren på webstedet
Det er vigtigt at understrege, at makroen kun kører i regnearket.
De af os, der bruger den almindelige Visual Basic-editor, ender ofte med at gemme makroer andre steder end i det aktuelle regneark.
Ingen af ​​disse koder vil fungere i den situation.
Jeg synes, denne kode er meget enklere, og den fungerer meget godt for mig: 

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Hvis ikke skærer (Range("d1"), mål) er ingenting så
Ring til aa
End If
End Sub
Sub aa() ' sæt din kode her
Range("D1"). Vælg
Selection.Copy
Range("F1"). Vælg
ActiveSheet.PasteEnd Sub
John Wells
jnw.wells@gmail.com
Denne kommentar blev minimeret af moderatoren på webstedet
Hej John Wells, tak fordi du deler.
Denne kommentar blev minimeret af moderatoren på webstedet
For dem, der ønsker, at dette skal fungere for fusionerede celler, er den hurtigste og mest beskidte måde at opdatere linje 2 som følger:
Mulighed Eksplicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Hvis Selection.Count > 0 Så
Hvis ikke skærer (mål, rækkevidde("D4")) er ingenting så
Ring til MyMacro
End If
End If
End SubSelection.Count bruges til at bestemme, om der er foretaget et valg, før den resterende makro udføres. Hvis dit valg består af fire celler, der er blevet flettet, vil Selection.Count være lig med 4, og den resterende kode vil aldrig blive udført. Du kan også ændre linje 2 til det nøjagtige antal celler, der blev flettet, men det vil give problemer, hvis du flette yderligere celler.
Denne kommentar blev minimeret af moderatoren på webstedet
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 pr.
aumentare il numero di opzioni basta aggiungere le nuove istruzionisempre sotto la stessa option eksplicit altrimente ci viene detto che il riferimento al
arbejdsark ikke è entydigt. Mi spiego meglio evidentemente su come ho adattato il codice con il mio esempio;

Mulighed for eksplicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Hvis Selection.Count = 1 Så
Hvis ikke skærer (mål, rækkevidde("Y64")) er ingenting så
Range("Y65:Y78"). Vælg
Range("Y65"). Aktiver
Selection.ClearContents
Range("Y65"). Vælg
End If
Hvis ikke skærer (mål, rækkevidde("A33")) er ingenting så
Range("A33"). Vælg
Selection.Copy
ActiveWindow.WindowState = xlMinimeret
Send Keys "^v"
Send Keys "{BACKSPACE}"
End If
End If
End Sub

Grazie ancora è stata un'autentica meraviglia!

Massimo
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg havde ingen forventninger til den titel, men jo mere var jeg overrasket. Forfatteren gjorde et godt stykke arbejde. Jeg brugte et par minutter på at læse og kontrollere fakta. Alt er meget klart og forståeligt. Jeg kan godt lide indlæg, der udfylder dine videnhuller. Denne er af slagsen.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

Ingen 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 sabre qué celda es la que se ha seleccionado.
Hay alguna manera de poder harcer eso?
Muchas gracias de antemano.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Hola,
Celleadressen er konstant. Alt du kan flytte er værdien af ​​cellen.
Den celle, du har angivet i VBA-koden, er stadig den celle, der udløser den angivne VBA-kode.
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