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

Jak wyzwolić lub uruchomić makro, klikając określoną komórkę w programie Excel?

Podczas pracy z programem Microsoft Excel możesz wiedzieć, jak uruchomić określone makro za pomocą przycisku polecenia. Ale czy wiesz, jak uruchomić makro, po prostu klikając określoną komórkę w arkuszu? W tym artykule pokażemy metodę uruchamiania makra poprzez szczegółowe kliknięcie określonej komórki.

Uruchom lub uruchom makro, klikając określoną komórkę z kodem VBA


Uruchom lub uruchom makro, klikając określoną komórkę z kodem VBA

Poniższy kod VBA może pomóc w uruchomieniu makra, klikając określoną komórkę w programie Excel. Wykonaj następujące czynności.

1. W arkuszu z komórką, którą należy kliknąć, aby uruchomić makro, kliknij prawym przyciskiem myszy kartę arkusza, a następnie kliknij Wyświetl kod z menu kontekstowego.

2. w Microsoft Visual Basic for Applications okno, skopiuj i wklej poniższy skrypt VBA do okna Code.

Kod VBA: uruchom lub uruchom makro, klikając określoną komórkę

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

Uwagi:

1. W kodzie D4 to komórka, którą klikniesz, aby uruchomić makro;

2. Proszę zastąpić nazwę kodową MojeMakro za pomocą makra, które uruchomisz w arkuszu. Zobacz zrzut ekranu:

3. wciśnij inny + Q klawisze jednocześnie, aby zamknąć Microsoft Visual Basic for Applications okno.

Odtąd po kliknięciu komórki D4 w bieżącym arkuszu roboczym określone makro zostanie uruchomione natychmiast.


Powiązane artykuły:


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (37)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Uruchom lub uruchom makro, klikając konkretną komórkę z kodem VBA, nie udało się tego uruchomić. Próbowałem tego na wiele różnych sposobów, ale nigdy nie osiągnąłem tego, co obiecano.
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten kod zadziała tylko wtedy, gdy umieścisz go w module „ThisWorkbook”. Nie działa na module ogólnym.
nazwa skoroszytu > Obiekty programu Microsoft Excel > Ten skoroszyt.
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten kod będzie działał na module kodu arkusza. Musisz kliknąć prawym przyciskiem myszy kartę arkusza i kliknąć „Wyświetl kod”. Spowoduje to otwarcie modułu kodu tylko dla tego arkusza roboczego. Następnie wklej wspomniany kod.
Ten komentarz został zminimalizowany przez moderatora na stronie
Jeśli chcesz mieć wiele makr, komórki uruchamiające różne makra na tej samej stronie - czy to możliwe?
Ten komentarz został zminimalizowany przez moderatora na stronie
Drogi Szymonie,
Poniższy skrypt VBA może pomóc w uruchamianiu różnych makr, klikając komórki na tej samej stronie.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Jeśli Target.Count = 1 Wtedy
Jeśli nie przecina (cel, zakres ("D4")) to nic, to zadzwoń do MojeMakro1
Jeśli nie przecina (cel, zakres ("D8")) to nic, to zadzwoń do MojeMakro2
Jeśli nie przecina (cel, zakres ("D10")) to nic, to zadzwoń do MojeMakro3
End If
End Sub

Dodaj wiersz „Jeśli nie przecina się (cel, zakres („D10”)) to nic, to zadzwoń do MyMacro”, aby uruchomić więcej makr, klikając komórkę. I zmień nazwy komórek i makr w kodzie w zależności od potrzeb.
Ten komentarz został zminimalizowany przez moderatora na stronie
Nie działa w moim Excelu. Kod jest poprawny?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Camila,
Przepraszam za niedogodności. Wypróbuj poniższy kod VBA.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRgArr jako wariant
Dim xFunArr jako wariant
Dim xFNum jako liczba całkowita
Dim xStr jako ciąg
Dim xRg jako zakres
xRgArr = Array("A1", "D1", "C1") 'Komórki używane do wyzwalania makra
xFunArr = Array("Nazwa kodowa1", "Nazwa kodowa2", "Nazwa kodowa3") 'Odpowiednie nazwy kodowe
Jeśli Selection.Count = 1 Wtedy
Dla xFNum = 0 To UBound(xRgArr)
Ustaw xRg = ActiveSheet.Range(xRgArr(xFNum))
Jeśli nie przecina (cel, xRg) jest niczym, to
xStr = xFunArr(xFNum)
Aplikacja. Uruchom xStr
End If
Dalej
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
To zadziałało idealnie i zaoszczędzi mi mnóstwo czasu - dziękuję za podzielenie się swoją wiedzą - bardzo doceniam!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cieszę się że mogłem pomóc.
Ten komentarz został zminimalizowany przez moderatora na stronie
Świetny. Działa dobrze ... Dziękuję ....
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć.

Mam to dobrze, ale chciałbym dodać warunek do uruchomienia makra. Chcę uruchomić makro tylko wtedy, gdy komórka obok komórki, w którą klikam, zawiera określoną wartość.
Np. po kliknięciu komórki F6 chcę, aby makro zostało uruchomione, jeśli komórka E6 zawiera znak „x”, ale jeśli komórka E6 jest pusta, makro nie może zostać uruchomione.
Mam nadzieję, że ma to sens.
Podziękowania

oto mój oryginalny kod bez warunku:


Opcja Jawna

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Jeśli Selection.Count = 1 Wtedy
Jeśli nie przecina(cel, zakres("F6:F18")) to nic wtedy
Data połączeniaWybierz
End If
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Poniższy kod VBA może pomóc w rozwiązaniu problemu. Proszę spróbować i dziękuję za komentarz.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg jako zakres
Jeśli nie przecina(cel, zakres("F6:F18")) to nic wtedy
Ustaw xRg = ActiveSheet.Cells(Target.Row, Target.Column - 1)
Jeśli (xRg.Value = "") Lub (xRg.Value <> "X"), Wyjdź z Sub
Zadzwoń na randkę
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzięki, ale co ze scalonymi komórkami?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Alberu,
Kod nie działa w przypadku scalonych komórek.
Ten komentarz został zminimalizowany przez moderatora na stronie
używam OpenOffice i kliknąłem prawym przyciskiem myszy kartę arkusza i wybrane zdarzenia, a następnie wybrałem to makro z MyMacros.. Jednak otrzymuję i błąd w następującym wierszu: If Selection.Count = 1 Then >>> "Basic runtime error, zmienna niezdefiniowana...
Ten komentarz został zminimalizowany przez moderatora na stronie
Hi James,
Kod działa tylko dla Microsoft Office Excel. Dziękuję za Twój komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
Mój pełny kod w tym makrze to:


Private Sub Worksheet_SelectionChange (ByVal Target As Range)

Wartość ściemniana jako ciąg
Wartość REM = Zakres("A2").Wartość

Jeśli Selection.Count = 1 Wtedy
Jeśli nie przecina (cel, zakres ("D24")) to nic, wtedy
REM Zadzwoń MojeMakro
val = Zakres("D24").Wartość
Zakres("B27").Wartość = wartość
End If
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten temat jest bardzo ciekawy i jestem zainteresowany ale nie wiem gdzie szukać, na szczęście tworzysz ten temat, mam nadzieję, że wszyscy mi pomogą http://run-3.online
Ten komentarz został zminimalizowany przez moderatora na stronie
Excel 2002 (XP): Jeśli skoroszyt jest otwierany przez wybranie „Plik” i naciśnięcie „Shift”, wyłącza makra w tym arkuszu, problem polega na tym, że jeśli wybiorę „Narzędzia > Makro > Makra…”, mogę uruchomić makro zresztą jak rozwiązać?
Ten komentarz został zminimalizowany przez moderatora na stronie
Hi Roger,
Nie testowaliśmy kodu w programie Excel 2002(XP). Dlaczego nie skorzystać z nowszej wersji pakietu Microsoft Office? Twoja praca będzie łatwiejsza.
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten sam wynik w 2010 roku.
Ten komentarz został zminimalizowany przez moderatora na stronie
Dlaczego po prostu nie użyć nowszej wersji, będzie to łatwiejsze
https://games.lol/racing/
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzięki, ale co powiesz na kilka komórek do kliknięcia w celu uruchomienia kilku makr.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Wypróbuj poniższy kod VBA.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRgArr jako wariant
Dim xFunArr jako wariant
Dim xFNum jako liczba całkowita
Dim xStr jako ciąg
Dim xRg jako zakres
xRgArr = Array("A1", "D1", "C1") 'Komórki używane do wyzwalania makra
xFunArr = Array("Nazwa kodowa1", "Nazwa kodowa2", "Nazwa kodowa3") 'Odpowiednie nazwy kodowe
Jeśli Selection.Count = 1 Wtedy
Dla xFNum = 0 To UBound(xRgArr)
Ustaw xRg = ActiveSheet.Range(xRgArr(xFNum))
Jeśli nie przecina (cel, xRg) jest niczym, to
xStr = xFunArr(xFNum)
Aplikacja. Uruchom xStr
End If
Dalej
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzięki za ten kod. Czy można to uruchomić, klikając komórkę, która jest połączona z innymi?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć M.Symonds,
Kod z tego artykułu może Ci wyświadczyć przysługę: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Dziękuję za Twój komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
witam, próbowałem użyć tego kodu do uruchomienia makra wklejania, ale nie mogę zrozumieć, jak prawidłowo wkleić makro.

oto mój oryginalny Marco

Subwklej()
'
' Wklej makro
'

'
Zakres („B34”) Wybierz
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
Fałsz, NieHTMLFormatting:=Prawda
End Sub


każda pomoc jest doceniana
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam, Dziękuję za interesujący temat. Co jeśli na przykład chcę kliknąć D4 w arkuszu 1 i zobaczyć wynik makra w arkuszu 2! F3.
Ten komentarz został zminimalizowany przez moderatora na stronie
Już nie działa.
Worksheet_SelectionChange nie istnieje domyślnie. Oznacza to, że nie możesz użyć tego do uruchomienia makra.

Jedyne osadzone podrzędne, których możesz użyć, są wymienione na liście rozwijanej „Skoroszyt”, więc...

Jedyną najbliższą rzeczą, jaką możesz zrobić, jest użycie Workbook_SheetBeforeDoubleClick. Ale wejdzie w tryb edycji (nadal nie jest to wielka sprawa).
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć CodeKiller.Worksheet_SelectionChange istnieje tylko w edytorze Sheet(Code). Kliknij prawym przyciskiem myszy kartę arkusza i kliknij opcję Wyświetl kod, aby aktywować edytor Arkusz(Kod).
Ten komentarz został zminimalizowany przez moderatora na stronie
Należy podkreślić, że makro działa tylko w arkuszu.
Ci z nas, którzy używają zwykłego edytora Visual Basic, często przechowują makra w innych miejscach niż w bieżącym arkuszu.
Żaden z tych kodów nie zadziała w takiej sytuacji.
Uważam, że ten kod jest znacznie prostszy i działa bardzo dobrze dla mnie: 

Private Sub Worksheet_SelectionChange (ByVal Target As Excel.Range)
Jeśli nie przecina (zakres("d1"), cel) jest niczym Wtedy
Zadzwoń
End If
End Sub
Sub aa() ' wstaw tutaj swój kod
Zakres ("D1"). Wybierz
Selection.Copy
Zakres ("F1"). Wybierz
ActiveSheet.PasteEnd Sub
John Wells
jnw.wells@gmail.com
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć John Wells,Dziękuję za udostępnienie.
Ten komentarz został zminimalizowany przez moderatora na stronie
Dla tych, którzy chcą, aby to działało dla scalonych komórek, najszybszym i najbrudniejszym sposobem jest aktualizacja linii 2 w następujący sposób:
Opcja Wyraźna

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Jeśli Selection.Count > 0 Wtedy
Jeśli nie przecina (cel, zakres ("D4")) to nic, wtedy
Zadzwoń do MojeMakro
End If
End If
End SubSelection.Count jest używany do określenia, czy wybór został dokonany przed wykonaniem pozostałego makra. Jeśli zaznaczenie składa się z czterech komórek, które zostały połączone, Selection.Count będzie równa 4, a pozostały kod nigdy nie zostanie wykonany. Możesz również zmienić wiersz 2 na dokładną liczbę komórek, które zostały scalone, ale spowoduje to problemy, jeśli scalić dodatkowe komórki.
Ten komentarz został zminimalizowany przez moderatora na stronie
Wspaniale! 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 opcja explicite altrimente ci viene detto che il riferimento al
arkusz roboczy non è univoco. Mi spiego meglio dowodu, jeśli chcesz, aby dostosować kod z mojego przykładu;

Opcja Jawna
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Jeśli Selection.Count = 1 Wtedy
Jeśli nie przecina(cel, zakres("Y64")) jest niczym wtedy
Zakres ("Y65:Y78").Wybierz
Zakres ("Y65"). Aktywuj
Wybór.WyczyśćZawartość
Zakres ("Y65"). Wybierz
End If
Jeśli nie przecina (cel, zakres ("A33")) to nic, wtedy
Zakres ("A33"). Wybierz
Selection.Copy
ActiveWindow.WindowState = xlZminimalizowane
WyślijKlawisze "^v"
WyślijKlawisze „{BACKSPACE}”
End If
End If
End Sub

Grazie ancora jest autentyczną meraviglią!

Massimo
Ten komentarz został zminimalizowany przez moderatora na stronie
Nie miałem żadnych oczekiwań co do tego tytułu, ale tym bardziej byłem zdumiony. Autor wykonał świetną robotę. Spędziłem kilka minut na czytaniu i sprawdzaniu faktów. Wszystko jest bardzo jasne i zrozumiałe. Lubię posty, które uzupełniają Twoje luki w wiedzy. Ten jest w tym rodzaju.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

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 sabre qué celda es la que se ha seleccionado.
Hay alguna manera de poder hacer eso?
Dziękuję bardzo z góry.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Hola,
Adres komórki jest stały. Wszystko, co możesz przenieść, to wartość komórki.
Komórka określona w kodzie VBA jest nadal komórką wyzwalającą określony kod VBA.
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL