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

Jak uruchomić makro, gdy zmienia się wartość komórki w programie Excel?

Zwykle w programie Excel możemy nacisnąć klawisz F5 lub przycisk Uruchom, aby wykonać kod VBA. Ale czy kiedykolwiek próbowałeś uruchomić określony kod makra, gdy zmienia się wartość komórki? W tym artykule przedstawię kilka szybkich sztuczek, aby poradzić sobie z tą pracą w programie Excel.

Uruchom lub wywołaj makro, gdy określona wartość komórki zmieni się wraz z kodem VBA

Uruchom lub wywołaj makro, gdy dowolna wartość komórki zmieni się w zakresie z kodem VBA


strzałka niebieski prawy bąbelek Uruchom lub wywołaj makro, gdy określona wartość komórki zmieni się wraz z kodem VBA

Aby uruchomić kod makra, zmieniając wartość komórki, następujący kod VBA może wyświadczyć ci przysługę, wykonaj następujące czynności:

1. Kliknij prawym przyciskiem myszy kartę arkusza, w którym chcesz wykonać makro, jeśli wartość komórki ulegnie zmianie, a następnie wybierz Wyświetl kod z menu kontekstowego oraz w otwartym Microsoft Visual Basic dla aplikacji w oknie, skopiuj i wklej następujący kod do pustego modułu:

Kod VBA: Uruchom makro, gdy zmienia się wartość komórki:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro
    End If
End Sub

doc uruchom makro, jeśli komórka się zmieni 1

Uwagi: W powyższym kodzie, A1 to konkretna komórka, na podstawie której chcesz uruchomić kod, Mymakro to nazwa makra, które chcesz uruchomić. Zmień je według swoich potrzeb.

2. A następnie zapisz i zamknij okno kodu, teraz, gdy wprowadzisz lub zmienisz wartość w komórce A1, określony kod zostanie wyzwolony od razu.


strzałka niebieski prawy bąbelek Uruchom lub wywołaj makro, gdy dowolna wartość komórki zmieni się w zakresie z kodem VBA

Jeśli chcesz uruchomić lub wyzwolić makro, gdy wartość dowolnej komórki zmieni się w zakresie komórek, może Ci pomóc poniższy kod.

1. Kliknij prawym przyciskiem myszy kartę arkusza, w którym chcesz wykonać makro, jeśli wartość komórki ulegnie zmianie, a następnie wybierz Wyświetl kod z menu kontekstowego oraz w otwartym Microsoft Visual Basic dla aplikacji w oknie, skopiuj i wklej następujący kod do pustego modułu:

Kod VBA: uruchom makro, gdy dowolna wartość komórki zmieni się w zakresie:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

doc uruchom makro, jeśli komórka się zmieni 2

Uwagi: W powyższym kodzie, A1: B100 to konkretne komórki, na podstawie których chcesz uruchomić kod, Mymakro to nazwa makra, które chcesz uruchomić. Zmień je według swoich potrzeb.

2. A następnie zapisz i zamknij okno kodu, teraz, gdy wprowadzisz lub zmienisz wartość w dowolnej komórce A1: B100, określony kod zostanie wykonany od razu.


Usuń wszystkie makra z wielu skoroszytów

Kutools dla programu Excel's Wsadowo usuń wszystkie makra Narzędzie może pomóc Ci usunąć wszystkie makra z wielu skoroszytów, zgodnie z potrzebami. Pobierz i bezpłatną wersję próbną Kutools dla programu Excel już teraz!

Kutools dla programu Excel: z ponad 300 poręcznymi dodatkami do programu Excel, które można wypróbować bez ograniczeń w ciągu 30 dni. Pobierz i bezpłatną wersję próbną teraz!


Podobne artykuły:

Jak automatycznie uruchomić makro przed drukowaniem w programie Excel?

Jak uruchomić makro na podstawie wartości komórki w programie Excel?

Jak uruchomić makro na podstawie wartości wybranej z rozwijanej listy w programie Excel?

Jak uruchomić makro, klikając hiperłącza w programie Excel?

Jak uruchomić makro, gdy arkusz jest wybrany ze skoroszytu?


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 (17)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten moduł nie działa dla mnie. Mówi, że gdy zmieni się WARTOŚĆ komórki, wykona kod. Uważam, że jeśli wpisuję do komórki, to działa, ale jeśli wartość komórki jest zmieniana przez formułę, na przykład Counta, to nie jest wykonywane. Czy masz rozwiązanie umożliwiające wykonanie makra, gdy WARTOŚĆ zmienia się za pomocą formuły? Dzięki, Wayne
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten sam problem co Wayne. Każda pomoc jest bardzo ceniona! Dzięki Ronnie
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć chłopaki,

Tak, powyższy kod jest dostępny tylko wtedy, gdy wartość komórki zmienia się ręcznie, jeśli chcesz automatycznie uruchomić określony kod makra, gdy wynik formuły zmieni się wraz ze zmianą jego względnych komórek, odwiedź ten artykuł:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Proszę spróbować i mam nadzieję, że odpowiesz.
Ten komentarz został zminimalizowany przez moderatora na stronie
To nie działa... i zmieniam wartość komórki ręcznie. Czy jest jakaś konfiguracja wstępna, którą należy ustawić?
Ten komentarz został zminimalizowany przez moderatora na stronie
Przetestuj to w procedurze i użyj jako parametru


Private Sub Worksheet_Change (ByVal Target As Range)

MsgBox Target.Address & "-" e Target.AddressLocal

End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Tak, opis mówi, że powinien być wyzwalany, gdy zmienia się wartość, ale drugi kod mówi, że jest to nic, a pierwszy nie jest wyzwalany, gdy zmienia się wartość, ale jeśli nacisnę F5 podczas patrzenia na kod, chce uruchamiać MyMacro, ale wydaje się, że nie reaguje na zmiany wartości tak bardzo, jak przechodzenie od niczego do czegoś lub odwrotnie.
Ten komentarz został zminimalizowany przez moderatora na stronie
Po raz pierwszy zadziałało to dla mnie przy użyciu listy walidacji danych, która wyświetla tekst na podstawie wyboru listy.
Ten komentarz został zminimalizowany przez moderatora na stronie
Działało świetnie dla mnie! Mój dylemat polega na tym, że chcę, aby było to makro odniesienia względnego i istnieje różnica między naciśnięciem klawisza Enter w celu zapisania wpisu i usunięcia w celu wyczyszczenia komórki.
Ten komentarz został zminimalizowany przez moderatora na stronie
Hej, przydatny kod. Zastanawiałem się, czy można wstawić pierścień wokół komórek, które zmieniają się tak, jak są zmieniane? I resetować kręgi w każdy poniedziałek ?
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Kevinie,
Tutaj nie ma pomysłu na rozwiązanie twojego problemu, jeśli masz jakieś dobre rozwiązanie, proszę o komentarz tutaj.
Ten komentarz został zminimalizowany przez moderatora na stronie
Makro, które wywołujesz, gdzie to się znajduje? Mam swoją w folderze Modules, ale kiedy umieszczam jakąkolwiek wartość w dowolnej komórce arkusza roboczego, pojawia się błąd kompilacji, mówiący:
Oczekiwana zmienna lub procedura, a nie moduł.

Proszę o pomoc.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, dr Cartwright,
Przepraszam, że tak późno odpisuję.
Tak, jak powiedziałeś, kod makra powinien znajdować się w module i musisz zmienić nazwę kodu na własne imię, jak pokazano na zrzucie ekranu:
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam dobry wieczór
quisiera saber el codigo para que se active una macro cuando cambia el valor de una celda de una columna, pero este este valor cambia por formuła, sin que el usuario introduzca ningun ningun valor.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć chłopaki, rozwiązuję następujący problem: chcę zeskrobać tytuł strony internetowej po wstawieniu linku w kolumnie A i umieścić tę wartość w odpowiedniej komórce (obok niej) w kolumnie B. Problem wydaje się polegać na tym, że po wklejeniu witryny w kolumnie A, kod ponownie uruchamia całą listę od kolumny A2 do „ostatniego wiersza” zgodnie z definicją w kodzie. Czy istnieje sposób, aby zmodyfikować kolumnę B tylko po zmodyfikowaniu pojedynczej kolumny A? Np. jeśli wkleję link w kolumnie A36 otrzymuję tytuł w B36, niezależnie od tego, czy komórka jest w środku używanego zakresu, czy na samym dole. Chciałbym z tego skorzystać bez konieczności ponownego uruchamiania wielu danych wejściowych w obecnym stanie; (tzn. pętla "for i =2 do ostatniego wiersza")? Chciałbym również zmienić poniższe z makra Modular, tj. Sub na sub prywatne reagujące na zmianę (tj. Funkcja przecięcia), gdzie "celem" jest dowolna komórka z zakresu A:A. Wielkie dzięki!


Sub get_title_header()



Dim wb jako obiekt

Dim doc jako obiekt

Dim sURL jako ciąg

Dim lastrow tak długo

lastrow = Sheet1.Cells(Rows.Count, "A").End(xlUp).row



Dla i = 2 Do ostatniego

Ustaw wb = CreateObject("internetExplorer.Application")

sURL = Komórki (i, 1)



wb.navigate SURL

wb.Widoczny = Fałsz



Podczas gdy wb.Zajęty

DoEvents

zastosować



''Dokument HTML

Ustaw dokument = wb.document



Komórki(i, 2) = dok.Tytuł



W przypadku błędu Przejdź do err_clear

Komórki(i, 3) = doc.GetElementsByTagName("h1")(0).innerText

błąd_wyczyść:

Jeśli błąd <> 0 Wtedy

Err.Clear

Wznów następne

End If

wb.Zamknij

Zakres(Komórki(i, 1), Komórki(i, 3)).Kolumny.AutoFit

Dalej i



End Sub




Dziękuję Ci!
Ten komentarz został zminimalizowany przez moderatora na stronie
Próbuję zautomatyzować 1 skoroszyt (BOM), gdy inny skoroszyt (stan części) wprowadza zmiany. Plik stanu części jest aktualizowany co 15 minut. Muszę wiedzieć, jak zautomatyzować określoną kolumnę, gdy nastąpią te zmiany? Jakieś pomysły
Ten komentarz został zminimalizowany przez moderatora na stronie
Używam poniższego kodu, aby ukryć różne kolumny w zależności od wyboru z rozwijanego pola znajdującego się w komórce C3, ale po wykonaniu obliczeń w dowolnym miejscu arkusza WSZYSTKIE kolumny stają się NIEUkryte. Jak to naprawić?

Prywatny Sub Worksheet_Change (ByVal Target As Range)

Kolumny("D:F").AutoFit

Dim Proj1 jako ciąg
Dim Proj2 jako ciąg
Dim Proj3 jako ciąg
Dim Proj4 jako ciąg
Dim Proj5 jako ciąg
Dim Proj6 jako ciąg
Dim Proj7 jako ciąg
Dim Proj8 jako ciąg
Dim Proj9 jako ciąg
Dim Proj10 jako ciąg

Proj1 = ActiveWorkbook.Sheets("Projekty").Range("A1").Value
Proj2 = ActiveWorkbook.Sheets("Projekty").Range("A2").Value
Proj3 = ActiveWorkbook.Sheets("Projekty").Range("A3").Value
Proj4 = ActiveWorkbook.Sheets("Projekty").Range("A4").Value
Proj5 = ActiveWorkbook.Sheets("Projekty").Range("A5").Value
Proj6 = ActiveWorkbook.Sheets("Projekty").Range("A6").Value
Proj7 = ActiveWorkbook.Sheets("Projekty").Range("A7").Value
Proj8 = ActiveWorkbook.Sheets("Projekty").Range("A8").Value
Proj9 = ActiveWorkbook.Sheets("Projekty").Range("A9").Value
Proj10 = ActiveWorkbook.Sheets("Projekty").Range("A10").Value

Dim xRG jako zakres
Dim xHRow jako liczba całkowita
Ustaw xRG = Zakres("C3")
Jeśli nie przecina (cel, xRG) to nic, to

Jeśli Target.Value = Proj1 Wtedy
Application.Columns("E:F").Ukryte = Prawda
Application.Columns("D").Ukryte = False

ElseIf Wartość docelowa = Proj2 Wtedy
Zakres("D:D, F:F").EntireColumn.Hidden = True
Application.Columns("E").Ukryte = False

End If
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
To jest dokładnie to, czego szukałem. Gdy użytkownik wprowadzi wartość w komórce, uruchomi się proste makro sortowania. Makro działa poprawnie samo, ale otrzymuję błąd nieprawidłowego użycia właściwości przy użyciu sugerowanego kodu.

Co może być problemem?
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