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

Hoe een macro te activeren of uit te voeren door op een specifieke cel in Excel te klikken?

Als u met Microsoft Excel werkt, weet u wellicht hoe u een bepaalde macro met een opdrachtknop moet uitvoeren. Maar weet u hoe u een macro moet uitvoeren door gewoon op een specifieke cel in een werkblad te klikken? Dit artikel laat je zien hoe je een macro activeert door in detail op een specifieke cel te klikken.

Activeer of voer een macro uit door op een specifieke cel met VBA-code te klikken


Activeer of voer een macro uit door op een specifieke cel met VBA-code te klikken

De volgende VBA-code kan u helpen bij het uitvoeren van een macro door op een specifieke cel in Excel te klikken. Ga als volgt te werk.

1. Op het werkblad met de cel waarop u moet klikken om een ​​macro uit te voeren, klikt u met de rechtermuisknop op de bladtab en klikt u vervolgens op Bekijk code vanuit het contextmenu.

2. In de Microsoft Visual Basic voor toepassingen -venster, kopieer en plak het onderstaande VBA-script in het codevenster.

VBA-code: activeer of voer een macro uit door op een specifieke cel te klikken

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

Opmerkingen:

1. In de code is D4 de cel waarop u klikt om Macro uit te voeren;

2. Vervang de codenaam Mijn Macro met de macro die u in het werkblad zult uitvoeren. Zie screenshot:

3. druk de anders + Q toetsen tegelijk om het Microsoft Visual Basic voor toepassingen venster.

Vanaf nu, wanneer u op cel D4 in het huidige werkblad klikt, wordt uw opgegeven macro onmiddellijk geactiveerd.


Gerelateerde artikelen:


De beste tools voor kantoorproductiviteit

Kutools voor Excel lost de meeste van uw problemen op en verhoogt uw productiviteit met 80%

  • visfuik: Snel invoegen complexe formules, grafieken en alles wat je eerder hebt gebruikt; Versleutel cellen met wachtwoord; Maak een mailinglijst en stuur e-mails ...
  • Super Formula-balk (bewerk eenvoudig meerdere regels tekst en formule); Lay-out lezen (gemakkelijk grote aantallen cellen lezen en bewerken); Plakken in gefilterd bereik...
  • Voeg cellen / rijen / kolommen samen zonder gegevens te verliezen; Gespleten cellen inhoud; Combineer dubbele rijen / kolommen... Voorkom dubbele cellen; Vergelijk Ranges...
  • Selecteer Dupliceren of Uniek Rijen; Selecteer lege rijen (alle cellen zijn leeg); Super zoeken en fuzzy zoeken in veel werkboeken; Willekeurige selectie ...
  • Exacte kopie Meerdere cellen zonder de formuleverwijzing te wijzigen; Maak automatisch verwijzingen naar meerdere bladen; Plaats kogels, Selectievakjes en meer ...
  • Extraheer tekst, Tekst toevoegen, Verwijderen op positie, Ruimte verwijderen; Paging-subtotalen maken en afdrukken; Converteren tussen celinhoud en opmerkingen...
  • Super filter (bewaar en pas filterschema's toe op andere bladen); Geavanceerd sorteren per maand / week / dag, frequentie en meer; Speciaal filter door vet, cursief ...
  • Combineer werkmappen en werkbladen; Tabellen samenvoegen op basis van sleutelkolommen; Gegevens splitsen in meerdere bladen; Batch Converteer xls, xlsx en PDF...
  • Meer dan 300 krachtige functies. Ondersteunt Office / Excel 2007-2021 en 365. Ondersteunt alle talen. Eenvoudig te implementeren in uw onderneming of organisatie. Volledige functies Gratis proefperiode van 30 dagen. 60 dagen geld-terug-garantie.
kte tabblad 201905

Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker

  • Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, Publisher, Access, Visio en Project.
  • Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster in plaats van in nieuwe vensters.
  • Verhoogt uw productiviteit met 50% en vermindert honderden muisklikken voor u elke dag!
officetab onderkant
Heb je vragen? Stel ze hier. (37)
Nog geen beoordelingen. Beoordeel als eerste!
Deze opmerking is gemaakt door de moderator op de site
Activeer of voer een macro uit door op een specifieke cel met VBA-code te klikken, kon dit niet laten werken. Ik heb het op veel verschillende manieren geprobeerd, maar het heeft nooit bereikt wat beloofd was.
Deze opmerking is gemaakt door de moderator op de site
Deze code werkt alleen als u deze in de module "ThisWorkbook" plaatst. Het werkt niet op een algemene module.
werkmapnaam > Microsft Excel-objecten > ThisWorkbook.
Deze opmerking is gemaakt door de moderator op de site
Deze code werkt op de werkbladcodemodule. U moet met de rechtermuisknop op de bladtab klikken en op 'Code weergeven' klikken. Hiermee wordt alleen de codemodule voor dat werkblad geopend. Plak vervolgens de genoemde code.
Deze opmerking is gemaakt door de moderator op de site
Als u meerdere macro's wilt hebben, cellen met verschillende macro's op dezelfde pagina - is dat mogelijk?
Deze opmerking is gemaakt door de moderator op de site
Beste Simon,
Het onderstaande VBA-script kan u helpen om verschillende macro's uit te voeren door op cellen op dezelfde pagina te klikken.

Privé subwerkblad_SelectionChange (ByVal-doel als bereik)
Als Target.Count = 1 Dan
Als niet snijden (doel, bereik ("D4")) niets is, bel dan MyMacro1
Als niet snijden (doel, bereik ("D8")) niets is, bel dan MyMacro2
Als niet snijden (doel, bereik ("D10")) niets is, bel dan MyMacro3
End If
End Sub

Voeg de regel "If Not Intersect(Target, Range ("D10")) Is Nothing Dan Call MyMacro toe" om meer macro uit te voeren door op cel te klikken. En verander de cel- en macronamen in de code op basis van uw behoeften.
Deze opmerking is gemaakt door de moderator op de site
Het werkt niet op mijn Excel. Is de code juist?
Deze opmerking is gemaakt door de moderator op de site
Hallo Camila,
Excuses voor het ongemak. Probeer de onderstaande VBA-code.

Privé subwerkblad_SelectionChange (ByVal-doel als bereik)
Dim xRgArr als variant
Dim xFunArr als variant
Dim xFNum als geheel getal
Dim xStr als tekenreeks
Dim xRg als bereik
xRgArr = Array("A1", "D1", "C1") 'Cellen die worden gebruikt om macro te activeren
xFunArr = Array("Codenaam1", "Codenaam2", "Codenaam3") 'De corresponderende codenamen
Als Selectie. Telling = 1 Dan
Voor xFNum = 0 Naar UBound(xRgArr)
Stel xRg = ActiveSheet.Bereik in (xRgArr(xFNum))
Als niet snijden (doel, xRg) is niets dan
xStr = xFunArr(xFNum)
Application.Run xStr
End If
Volgende
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Dit werkte perfect en zal me veel tijd besparen - bedankt voor het delen van je kennis - zeer gewaardeerd!
Deze opmerking is gemaakt door de moderator op de site
Ik ben blij dat ik kon helpen.
Deze opmerking is gemaakt door de moderator op de site
Super goed. Het werkt goed... Dank je....
Deze opmerking is gemaakt door de moderator op de site
Hoi.

Ik heb dit goed werkend, maar zou graag een voorwaarde willen toevoegen aan het uitvoeren van de macro. Ik wil de macro alleen uitvoeren als de cel naast de cel waarin ik klik een bepaalde waarde bevat.
bijv. Als ik op cel F6 klik, wil ik dat de macro wordt uitgevoerd als cel E6 "x" bevat, maar als cel E6 leeg is, mag de macro niet worden uitgevoerd.
Hoop dat het logisch is.
Bedankt

hier is mijn originele code zonder de voorwaarde:


Optie Expliciet

Privé subwerkblad_SelectionChange (ByVal-doel als bereik)
Als Selectie. Telling = 1 Dan
Indien niet snijden (doel, bereik ("F6:F18")) is dan niets
Bel datumKiezen
End If
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Hoi,
De volgende VBA-code kan u helpen het probleem op te lossen. Probeer het alsjeblieft en bedankt voor je reactie.

Privé subwerkblad_SelectionChange (ByVal-doel als bereik)
Dim xRg als bereik
Indien niet snijden (doel, bereik ("F6:F18")) is dan niets
Stel xRg = ActiveSheet.Cells (Doel.Rij, Doel.Kolom - 1) in
Als (xRg.Value = "") Of (xRg.Value <> "X"), sluit dan Sub af
Bel datumkiezer
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Bedankt, maar hoe zit het met samengevoegde cellen?
Deze opmerking is gemaakt door de moderator op de site
Hallo Alber,
De code werkt niet voor samengevoegde cellen.
Deze opmerking is gemaakt door de moderator op de site
ik gebruik OpenOffice en heb met de rechtermuisknop op de bladtab geklikt en de gebeurtenissen geselecteerd en vervolgens deze macro geselecteerd in MyMacros. Ik krijg echter een foutmelding op de volgende regel: If Selection.Count = 1 Then >>> "Basic runtime error, variabele niet gedefinieerd...
Deze opmerking is gemaakt door de moderator op de site
Hi James,
De code werkt alleen voor Microsoft Office Excel. Bedankt voor je reactie.
Deze opmerking is gemaakt door de moderator op de site
Mijn volledige code in deze macro is:


Privé subwerkblad_SelectionChange (ByVal-doel als bereik)

Dim waarde als tekenreeks
REM-waarde = Bereik ("A2"). Waarde

Als Selectie. Telling = 1 Dan
Als niet snijden (doel, bereik ("D24")) is niets dan
REM Bel Mijn Macro
val = Bereik ("D24"). Waarde
Bereik ("B27"). Waarde = waarde
End If
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Dit onderwerp is erg interessant en ik ben geïnteresseerd, maar weet niet waar ik het moet vinden, gelukkig maak je dit onderwerp aan, ik hoop dat iedereen me zal helpen http://run-3.online
Deze opmerking is gemaakt door de moderator op de site
Excel 2002 (XP): als een werkmap wordt geopend door "Bestand" te selecteren en op "Shift" te drukken, worden macro's in dat blad uitgeschakeld, het probleem is dat als ik "Extra > Macro > Macro's..." selecteer, ik de macro kan uitvoeren hoe dan ook, hoe op te lossen?
Deze opmerking is gemaakt door de moderator op de site
Hi Roger,
We hebben de code niet getest in Excel 2002(XP). Waarom niet de nieuwere versie van Microsoft Office gebruiken? Het zal gemakkelijker zijn voor uw werk.
Deze opmerking is gemaakt door de moderator op de site
Zelfde resultaat in 2010.
Deze opmerking is gemaakt door de moderator op de site
Waarom niet gewoon een nieuwere versie gebruiken, het zal gemakkelijker zijn
https://games.lol/racing/
Deze opmerking is gemaakt door de moderator op de site
Bedankt, maar hoe zit het met meerdere cellen om te klikken voor het uitvoeren van verschillende macro's.
Deze opmerking is gemaakt door de moderator op de site
Hoi,
Probeer de onderstaande VBA-code.

Privé subwerkblad_SelectionChange (ByVal-doel als bereik)
Dim xRgArr als variant
Dim xFunArr als variant
Dim xFNum als geheel getal
Dim xStr als tekenreeks
Dim xRg als bereik
xRgArr = Array("A1", "D1", "C1") 'Cellen die worden gebruikt om macro te activeren
xFunArr = Array("Codenaam1", "Codenaam2", "Codenaam3") 'De corresponderende codenamen
Als Selectie. Telling = 1 Dan
Voor xFNum = 0 Naar UBound(xRgArr)
Stel xRg = ActiveSheet.Bereik in (xRgArr(xFNum))
Als niet snijden (doel, xRg) is niets dan
xStr = xFunArr(xFNum)
Application.Run xStr
End If
Volgende
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Bedankt voor deze code. Is het mogelijk om dit te laten werken door op een cel te klikken die is samengevoegd met andere?
Deze opmerking is gemaakt door de moderator op de site
Hallo M.Symonds,
De code in dit artikel kan je een plezier doen: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Bedankt voor je reactie.
Deze opmerking is gemaakt door de moderator op de site
hallo, ik probeerde deze code te gebruiken om een ​​plakmacro uit te voeren, maar ik kan er niet achter komen hoe ik de macro correct kan plakken.

hier is mijn originele Marco

Sub plakken()
'
'Plak macro'
'

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


Elke hulp wordt gewaardeerd
Deze opmerking is gemaakt door de moderator op de site
Hallo, bedankt voor je interessante onderwerp. Wat als ik bijvoorbeeld op D4 in Blad1 wil klikken en het resultaat van Macro in Blad2!F3 wil zien.
Deze opmerking is gemaakt door de moderator op de site
Werkt niet meer.
Worksheet_SelectionChange bestaat niet standaard. Dit betekent dat u dat niet kunt gebruiken om een ​​macro te activeren.

De enige ingesloten sub die u kunt gebruiken, wordt vermeld in de vervolgkeuzelijst "Werkmap", dus...

Het enige dat u het beste kunt doen, is Workbook_SheetBeforeDoubleClick gebruiken. Maar het gaat naar de bewerkingsmodus (nog steeds geen probleem).
Deze opmerking is gemaakt door de moderator op de site
Hallo CodeKiller.Worksheet_SelectionChange bestaat alleen in de Sheet(Code)-editor. Klik met de rechtermuisknop op de bladtab en klik op Code weergeven om de editor voor blad(code) te activeren.
Deze opmerking is gemaakt door de moderator op de site
Het is belangrijk om te benadrukken dat de macro alleen in het werkblad wordt uitgevoerd.
Degenen onder ons die de reguliere visuele basiseditor gebruiken, slaan macro's vaak op andere plaatsen op dan in het huidige werkblad.
Geen van deze codes zal in die situatie werken.
Ik vind deze code veel eenvoudiger en het werkt heel goed voor mij: 

Private Sub Worksheet_SelectionChange (ByVal Target As Excel.Range)
Als niet snijden (bereik ("d1"), doel) is dan niets
bel aa
End If
End Sub
Sub aa()' zet hier je code
Bereik ("D1"). Selecteer
Selection.Copy
Bereik ("F1"). Selecteer
ActiveSheet.PasteEnd Sub
John Wells
jnw.wells@gmail.com
Deze opmerking is gemaakt door de moderator op de site
Hallo John Wells, bedankt voor het delen.
Deze opmerking is gemaakt door de moderator op de site
Voor degenen die willen dat dit werkt voor samengevoegde cellen, is de snelste en smerigste manier om regel 2 als volgt bij te werken:
Optie expliciet

Privé subwerkblad_SelectionChange (ByVal-doel als bereik)
Als Selectie. Tellen > 0 Dan
Als niet snijden (doel, bereik ("D4")) is niets dan
Bel Mijn Macro
End If
End If
End SubSelection.Count wordt gebruikt om te bepalen of een selectie is gemaakt voordat de resterende macro wordt uitgevoerd. Als uw selectie uit vier cellen bestaat die zijn samengevoegd, is Selectie. Telling gelijk aan 4 en wordt de resterende code nooit uitgevoerd. U kunt regel 2 ook wijzigen in het exacte aantal cellen dat is samengevoegd, maar dat zal problemen veroorzaken als u voeg extra cellen samen.
Deze opmerking is gemaakt door de moderator op de site
Grandioos! 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 expliciete altrimente ci viene detto che il riferimento al
werkblad niet è univoco. Mi spiego meglio evidentemente su come ho adattato il codice con il mio esempio;

Optie Expliciet
Privé subwerkblad_SelectionChange (ByVal-doel als bereik)
Als Selectie. Telling = 1 Dan
Als niet snijden (doel, bereik ("Y64")) is niets dan
Bereik ("Y65:Y78"). Selecteer
Bereik ("Y65"). Activeren
Selectie.ClearInhoud
Bereik ("Y65"). Selecteer
End If
Als niet snijden (doel, bereik ("A33")) is niets dan
Bereik ("A33"). Selecteer
Selection.Copy
ActiveWindow.WindowState = xlMinimized
SendKeys "^v"
Verzendsleutels "{BACKSPACE}"
End If
End If
End Sub

Grazie ancora en stata un'autentica meraviglia!

Maximaal
Deze opmerking is gemaakt door de moderator op de site
Ik had geen verwachtingen over die titel, maar hoe meer ik verbaasd was. De auteur heeft geweldig werk geleverd. Ik heb een paar minuten besteed aan het lezen en controleren van de feiten. Alles is heel duidelijk en begrijpelijk. Ik hou van berichten die je kennishiaten opvullen. Deze is van het soort.
Deze opmerking is gemaakt door de moderator op de site
Hallo,

Geen enkele manera de hacer lo que necesito. Espero de veras que me podáis ayudar.
Noodzaak van een MACRO al hacer clic en una celda, pero no se 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 del funcionalidades por funcionalidades fichero, las celdas se van a mover de sitio (se han podido insertar, mas o menos filas encima). Benodigdheden poder saber qué celda es la que se ha seleccionado.
Hooialguna manera de poder hacer eso?
Hartelijk dank bij voorbaat.
Deze opmerking is gemaakt door de moderator op de site
Hallo Hola,
Het celadres is constant. Het enige dat u kunt verplaatsen, is de waarde van de cel.
De cel die u in de VBA-code hebt opgegeven, is nog steeds de cel die de opgegeven VBA-code activeert.
Er zijn nog geen reacties geplaatst
Laat uw commentaar
Posten als gast
×
Beoordeel dit bericht:
0   Personages
Voorgestelde locaties

Volg ons

Copyright © 2009 - www.extendoffice.com. | Alle rechten voorbehouden. Aangedreven door ExtendOffice. | Sitemap
Microsoft en het Office-logo zijn handelsmerken of gedeponeerde handelsmerken van Microsoft Corporation in de Verenigde Staten en / of andere landen.
Beschermd door Sectigo SSL