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

Hogyan indíthat vagy futtathat egy makrót az Excel egy adott cellájára kattintva?

Miközben a Microsoft Excel programmal dolgozik, tudhatja, hogyan kell futtatni egy bizonyos makrót egy parancsgombbal. De tudod, hogyan kell futtatni egy makrót úgy, hogy csak egy munkalapon egy adott cellára kattintasz? Ez a cikk bemutatja a makró kiváltásának módját, ha egy részletre kattint egy adott cellára.

Indítson el vagy futtasson egy makrót egy VBA kóddal rendelkező cellára kattintva


Indítson el vagy futtasson egy makrót egy VBA kóddal rendelkező cellára kattintva

A következő VBA-kód segíthet a makró futtatásában, ha rákattint egy adott cellára az Excelben. Kérjük, tegye a következőket.

1. Azon cellával ellátott munkalapon, amelyre kattintania kell a makró futtatásához, kattintson a jobb gombbal a lap fülre, majd kattintson a gombra Kód megtekintése a helyi menüből.

2. Ban,-ben Microsoft Visual Basic for Applications ablakba, másolja és illessze be az alábbi VBA parancsfájlt a Kód ablakba.

VBA-kód: Indítson vagy futtasson egy makrót egy adott cellára kattintva

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

Megjegyzések:

1. A kódban a D4 az a cella, amelyre kattintva futtathatja a Makrót;

2. Kérjük, cserélje ki a kód nevét MyMacro a Makróval a munkalapon fog futtatni. Lásd a képernyőképet:

3. megnyomni a más + Q gombok egyszerre a Microsoft Visual Basic for Applications ablak.

Mostantól, amikor az aktuális munkalap D4 cellájára kattint, a megadott makró azonnal elindul.


Kapcsolódó cikkek:


A legjobb irodai termelékenységi eszközök

A Kutools for Excel megoldja a legtöbb problémát, és 80% -kal növeli a termelékenységet

  • újrafelhasználás: Gyorsan helyezze be összetett képletek, diagramok és bármi, amit korábban használt; Cellák titkosítása jelszóval; Levelezőlista létrehozása és e-maileket küldeni ...
  • Szuper Formula Bár (könnyedén szerkeszthet több szöveget és képletet); Olvasás elrendezés (könnyen olvasható és szerkeszthető nagyszámú cella); Beillesztés a Szűrt tartományba...
  • Cellák / sorok / oszlopok egyesítése az adatok elvesztése nélkül; Osztott cellák tartalma; Kombinálja a duplikált sorokat / oszlopokat... megakadályozza az ismétlődő cellákat; Hasonlítsa össze a tartományokat...
  • Válassza a Másolat vagy az Egyedi lehetőséget Sorok; Válassza az Üres sorok lehetőséget (az összes cella üres); Super Find és Fuzzy Find sok munkafüzetben; Véletlenszerű kiválasztás ...
  • Pontos másolás Több cella a képletreferencia megváltoztatása nélkül; Automatikus referenciák létrehozása több lapra; Helyezze be a golyókat, Jelölőnégyzetek és még sok más ...
  • Kivonat szöveg, Szöveg hozzáadása, Eltávolítás pozíció szerint, Hely eltávolítása; Hozz létre és nyomtasson személyhívó részösszegeket; Konvertálás a cellatartalom és a megjegyzések között...
  • Szuper szűrő (mentse el és alkalmazza a szűrősémákat más lapokra); Haladó rendezés hónap / hét / nap, gyakoriság és egyebek szerint; Speciális szűrő félkövér, dőlt betűvel ...
  • Kombinálja a munkafüzeteket és a munkalapokat; Táblázatok egyesítése kulcsoszlopok alapján; Az adatok felosztása több lapra; Kötegelt konvertálás xls, xlsx és PDF...
  • Több mint 300 hatékony funkció. Támogatja az Office / Excel 2007-2021 és 365 verziókat. Minden nyelvet támogat. Könnyű üzembe helyezés vállalatában vagy szervezetében. Teljes funkciók 30 napos ingyenes próbaverzió. 60 napos pénzvisszafizetési garancia.
kte lap 201905

Az Office fül a füles felületet hozza az Office-ba, és sokkal könnyebbé teszi a munkáját

  • Füles szerkesztés és olvasás engedélyezése Wordben, Excelben és PowerPointban, Publisher, Access, Visio és Project.
  • Több dokumentum megnyitása és létrehozása ugyanazon ablak új lapjain, mint új ablakokban.
  • 50% -kal növeli a termelékenységet, és naponta több száz kattintással csökkenti az egér kattintását!
officetab alja
A megjegyzések rendezése szerint
Hozzászólások (37)
Még nincs értékelés. Legyen Ön az első, aki értékel!
A weboldal moderátora ezt a megjegyzést minimalizálta
Egy adott VBA-kóddal rendelkező cellára kattintva elindíthat vagy futtathat egy makrót, ezt nem sikerült működésre bírni. Sokféleképpen próbáltam, de soha nem érte el, amit ígértem.
A weboldal moderátora ezt a megjegyzést minimalizálta
Ez a kód csak akkor működik, ha elhelyezi a „ThisWorkbook” modulban. Általános modulon nem működik.
munkafüzetnév > Microsft Excel-objektumok > ThisWorkbook.
A weboldal moderátora ezt a megjegyzést minimalizálta
Ez a kód a munkalap kódmodulon fog működni. Jobb gombbal kell kattintania a lapfülre, és kattintson a "Kód megtekintése" gombra. Ez csak az adott munkalap kódmodulját nyitja meg. Ezután illessze be az említett kódot.
A weboldal moderátora ezt a megjegyzést minimalizálta
Ha több makrót szeretne használni, különböző makrókat futtató cellák ugyanazon az oldalon – lehetséges ez?
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Simon!
Az alábbi VBA-szkript segíthet különböző makrók futtatásában az ugyanazon az oldalon lévő cellákra kattintva.

Private Sub Worksheet_SelectionChange (ByVal Target as Range)
Ha Target.Count = 1 Akkor
Ha nem metszik (cél, tartomány ("D4")) semmi, akkor hívja a MyMacro1-et
Ha nem metszik (cél, tartomány ("D8")) semmi, akkor hívja a MyMacro2-et
Ha nem metszik (cél, tartomány ("D10")) semmi, akkor hívja a MyMacro3-et
Ha véget
End Sub

A cellára kattintva további makrók futtatásához adja hozzá az „Ha nem metszik(Cél, Tartomány("D10")) Semmit, akkor hívja meg a MyMacro-t. És változtassa meg a cella- és makróneveket a kódban az Ön igényei szerint.
A weboldal moderátora ezt a megjegyzést minimalizálta
Nem működik az Excelben. A kód helyes?
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia Camila,
Elnézést a kellemetlenségért. Próbáld ki az alábbi VBA kódot.

Private Sub Worksheet_SelectionChange (ByVal Target as Range)
Dim xRgArr As Variant
Dim xFunArr As Variant
Dim xFNum As Integer
Dim xStr As String
Dim xrg mint tartomány
xRgArr = Array("A1", "D1", "C1") 'Makró indítására használt cellák
xFunArr = Array("Kódnév1", "Kódnév2", "Kódnév3") 'A megfelelő kódnevek
Ha Selection.Count = 1 Akkor
Ha xFNum = 0 - UBound(xRgArr)
Állítsa be az xRg = ActiveSheet.Range(xRgArr(xFNum))
Ha nem metszik (Cél, xRg) akkor semmi
xStr = xFunArr(xFNum)
Application.Run xStr
Ha véget
Következő
Ha véget
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Ez tökéletesen működött, és rengeteg időt fog megspórolni – köszönöm, hogy megosztotta tudását – nagyra értékeljük!
A weboldal moderátora ezt a megjegyzést minimalizálta
Örülök, hogy segíthettem.
A weboldal moderátora ezt a megjegyzést minimalizálta
Nagy. Jól működik... Köszönöm...
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia.

Ez jól működik, de szeretnék egy feltételt hozzáadni a makró futtatásához. Csak akkor szeretném futtatni a makrót, ha a cella melletti cella, amelybe kattintok, egy bizonyos értéket tartalmaz.
Pl. Ha az F6 cellára kattintok, akkor azt szeretném, hogy a makró lefusson, ha az E6 cella "x"-et tartalmaz, de ha az E6 cella üres, akkor a makró nem futhat.
Remélem, ez értelme.
Kösz

itt van az eredeti kódom feltétel nélkül:


Explicit lehetőség

Private Sub Worksheet_SelectionChange (ByVal Target as Range)
Ha Selection.Count = 1 Akkor
Ha nem metszik(cél, tartomány("F6:F18")) akkor semmi
Hívja a datePick-et
Ha véget
Ha véget
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia,
A következő VBA-kód segíthet a probléma megoldásában. Kérjük, próbálja ki, és köszönöm megjegyzését.

Private Sub Worksheet_SelectionChange (ByVal Target as Range)
Dim xrg mint tartomány
Ha nem metszik(cél, tartomány("F6:F18")) akkor semmi
Set xRg = ActiveSheet.Cells (Cél.sor, Cél.oszlop - 1)
If (xRg.Value = "") Or (xRg.Value <> "X") Akkor lépjen ki az alból
Hívja a dátumválasztót
Ha véget
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Köszönöm, de mi a helyzet az egyesített cellákkal?
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia Alber,
A kód nem működik egyesített cellák esetén.
A weboldal moderátora ezt a megjegyzést minimalizálta
OpenOffice-ot használok, jobb gombbal kattintottam a lapfülre, kiválasztottam az eseményeket, majd kiválasztottam ezt a makrót a MyMacros-ból. Azonban a következő sorban hibaüzenetet kapok: Ha Selection.Count = 1 Akkor >>> "Alap futásidejű hiba, változó nincs definiálva...
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia James,
A kód csak a Microsoft Office Excel programban működik. Köszönjük észrevételét.
A weboldal moderátora ezt a megjegyzést minimalizálta
A teljes kódom ebben a makróban:


Private Sub Worksheet_SelectionChange (ByVal Target as Range)

Dim val As String
REM érték = Tartomány("A2").Érték

Ha Selection.Count = 1 Akkor
Ha nem metszik(cél, tartomány("D24")) akkor semmi
REM Call MyMacro
val = Tartomány("D24").Érték
Tartomány("B27").Érték = érték
Ha véget
Ha véget
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Ez a téma nagyon érdekes és érdekel, de nem tudom hol találom, szerencsére te hoztad létre ezt a témát, remélem mindenki segít http://run-3.online
A weboldal moderátora ezt a megjegyzést minimalizálta
Excel 2002 (XP): Ha egy munkafüzetet a "Fájl" kiválasztásával és a "Shift" lenyomásával nyitunk meg, az letiltja a makrókat azon a lapon, a probléma az, hogy ha kiválasztom az "Eszközök > Makró > Makrók..." lehetőséget, akkor futtatni tudom a makrót. amúgy hogyan lehet megoldani?
A weboldal moderátora ezt a megjegyzést minimalizálta
Hi Roger,
Nem teszteltük a kódot az Excel 2002(XP) programban. Miért nem használja a Microsoft Office újabb verzióját? Könnyebb lesz a munkája.
A weboldal moderátora ezt a megjegyzést minimalizálta
Ugyanez az eredmény 2010-ben.
A weboldal moderátora ezt a megjegyzést minimalizálta
Miért nem csak egy újabb verziót használ, akkor könnyebb lesz
https://games.lol/racing/
A weboldal moderátora ezt a megjegyzést minimalizálta
Köszönöm, de mit szólnál több cellához, ha több makró futtatásához kattintasz.
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia,
Próbáld ki az alábbi VBA kódot.

Private Sub Worksheet_SelectionChange (ByVal Target as Range)
Dim xRgArr As Variant
Dim xFunArr As Variant
Dim xFNum As Integer
Dim xStr As String
Dim xrg mint tartomány
xRgArr = Array("A1", "D1", "C1") 'Makró indítására használt cellák
xFunArr = Array("Kódnév1", "Kódnév2", "Kódnév3") 'A megfelelő kódnevek
Ha Selection.Count = 1 Akkor
Ha xFNum = 0 - UBound(xRgArr)
Állítsa be az xRg = ActiveSheet.Range(xRgArr(xFNum))
Ha nem metszik (Cél, xRg) akkor semmi
xStr = xFunArr(xFNum)
Application.Run xStr
Ha véget
Következő
Ha véget
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Köszönöm ezt a kódot. Lehetséges-e ezt működésbe hozni, ha rákattintunk egy cellára, ami össze van vonva másokkal?
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia M.Symonds!
A cikkben található kód jót tehet: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Köszönöm a megjegyzését.
A weboldal moderátora ezt a megjegyzést minimalizálta
hello! Próbáltam ezt a kódot használni egy beillesztési makró futtatására, de nem tudom, hogyan kell megfelelően beilleszteni a makrót.

itt az eredeti Marco

Sub Paste()
'
"Makró beillesztése
'

'
Tartomány("B34").Válassza ki
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False, NoHTMLFormatting:=Igaz
End Sub


minden segítséget előre is köszönjük
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia! Köszönjük az érdekes témát. Mi van akkor, ha például a D4-re akarok kattintani az 1-es munkalapon, és látni akarom a Makró eredményét a 2. munkalapon!F3.
A weboldal moderátora ezt a megjegyzést minimalizálta
már nem működik.
A Worksheet_SelectionChange alapértelmezés szerint nem létezik. Ez azt jelenti, hogy ezt nem használhatja makró indítására.

Az egyetlen használható beágyazott alcím a „Munkafüzet” legördülő listában található, így...

Az egyetlen, amit tehet, a Workbook_SheetBeforeDoubleClick használata. De Szerkesztés módba lép (még mindig nem nagy ügy).
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia CodeKiller.Worksheet_SelectionChange csak a Sheet(Code) szerkesztőben létezik. Kattintson a jobb gombbal a lapfülre, majd kattintson a Kód megtekintése elemre a Lap(kód) szerkesztő aktiválásához.
A weboldal moderátora ezt a megjegyzést minimalizálta
Fontos hangsúlyozni, hogy a makró csak a munkalapon fut.
Azok, akik a szokásos Visual Basic szerkesztőt használjuk, gyakran a makrókat máshol tárolják, mint az aktuális munkalapon.
Ezen kódok egyike sem fog működni ebben a helyzetben.
Ezt a kódot sokkal egyszerűbbnek találom, és nagyon jól működik nekem: 

Private Sub Worksheet_SelectionChange(ByVal Target as Excel.Range)
Ha nem metszik(Tartomány("d1"), a cél) akkor semmi
Hívd aa
Ha véget
End Sub
Sub aa() ' írja ide a kódját
Tartomány("D1").Válassza ki
Selection.Copy
Tartomány("F1").Válassza ki
ActiveSheet.PasteEnd Sub
John Wells
jnw.wells@gmail.com
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia John Wells! Köszönjük a megosztást.
A weboldal moderátora ezt a megjegyzést minimalizálta
Azok számára, akik azt szeretnék, hogy ez működjön egyesített cellák esetén, a leggyorsabb és legpiszkosabb módja a 2. sor frissítése az alábbiak szerint:
Explicit opció

Private Sub Worksheet_SelectionChange (ByVal Target as Range)
Ha Selection.Count > 0 Akkor
Ha nem metszik(cél, tartomány("D4")) akkor semmi
Hívja a MyMacro-t
Ha véget
Ha véget
Az End SubSelection.Count segítségével megállapítható, hogy a fennmaradó makró végrehajtása előtt történt-e kijelölés. Ha a kijelölés négy egyesített cellából áll, a Selection.Count értéke 4 lesz, és a fennmaradó kód soha nem fut le. A 2. sort is módosíthatja az egyesített cellák pontos számára, de ez problémákat okoz, ha egyesítsen további cellákat.
A weboldal moderátora ezt a megjegyzést minimalizálta
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 nove istruzionisempre sotto la stessa option explicit altrimente ci viene detto che il riferimento al
munkalap non è univoco. Mi spiego meglio evidentemente su come ho adattato il codice con il mio esempio;

Explicit lehetőség
Private Sub Worksheet_SelectionChange (ByVal Target as Range)
Ha Selection.Count = 1 Akkor
Ha nem metszik (cél, tartomány ("Y64")) akkor semmi
Tartomány("Y65:Y78").Válassza ki
Tartomány("Y65"). Aktiválja
Selection.ClearContents
Tartomány("Y65").Válassza ki
Ha véget
Ha nem metszik(cél, tartomány("A33")) akkor semmi
Tartomány("A33").Válassza ki
Selection.Copy
ActiveWindow.WindowState = xlMinimized
SendKeys "^v"
SendKeys "{BACKSPACE}"
Ha véget
Ha véget
End Sub

Grazie ancora è stata un'autentica meraviglia!

Massimo
A weboldal moderátora ezt a megjegyzést minimalizálta
Nem voltak elvárásaim ezzel a címmel kapcsolatban, de annál jobban meglepődtem. A szerző nagyszerű munkát végzett. Néhány percet töltöttem a tények olvasásával és ellenőrzésével. Minden nagyon világos és érthető. Szeretem az olyan bejegyzéseket, amelyek kitöltik a tudás hiányosságait. Ez a fajta.
A weboldal moderátora ezt a megjegyzést minimalizálta
Helló,

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 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?
Nagyon szépen köszönöm előre.
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia Hola
A cella címe állandó. Csak a cella értékét tudja mozgatni.
A VBA-kódban megadott cella továbbra is az a cella, amely kiváltja a megadott VBA-kódot.
Még senki sem írt megjegyzést
Hagyja meg észrevételeit
Feladás vendégként
×
Értékeld ezt a bejegyzést:
0   Karakterek
Javasolt helyek

Kövess minket

Copyright © 2009 - www.extendoffice.com. | Minden jog fenntartva. Powered by ExtendOffice. | Oldaltérkép
A Microsoft és az Office logó a Microsoft Corporation védjegyei vagy bejegyzett védjegyei az Egyesült Államokban és / vagy más országokban.
Sectigo SSL védi