Jak uruchomić makro po zmianie niektórych komórek w programie Excel

Podsumowanie

W programie Microsoft Excel można utworzyć makro, które jest wywoływane tylko wtedy, gdy wartość wprowadzana jest do komórki w określonym arkuszu lub w dowolnym aktualnie otwartym arkuszu.

Należy jednak pamiętać, żeby niepotrzebnie nie wywoływać makr, ponieważ spowalniają one wydajność programu Excel.

Więcej informacji

Firma Microsoft podaje przykłady programowania tylko dla celów ilustracyjnych, nie udzielając żadnej rękojmi, wyrażonej wprost ani dorozumianej, w tym także, ale nie tylko, dorozumianej rękojmi co do przydatności handlowej lub do określonych celów. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnych funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika. W wielu przypadkach makro powinno być uruchamiane tylko wtedy, gdy wprowadzono do nich określoną liczbę komórek (zwanych w tym dokumencie „kluczowymi komórkami Aby zapobiec uruchamianiu dużego makra za każdym razem, gdy wartość jest wprowadzana do komórki arkusza, należy sprawdzić, czy ActiveCell jest jedną z kluczowych komórek. Aby to zrobić, należy użyć metody tworzenia części wspólnych w ActiveCell i zakresu zawierającego kluczowe komórki, aby sprawdzić, czy ActiveCell jest jedną z kluczowych komórek. Jeśli ActiveCell znajduje się w zakresie zawierającym kluczowe komórki, można wywołać makro.

Aby utworzyć makro języka Visual Basic:

  1. Kliknij prawym przyciskiem myszy kartę Arkusz1, a następnie kliknij polecenie Wyświetl kod.

    Arkusz modułu za Sheet1 zostanie otwarty.

  2. Wpisz następujący kod w arkuszu modułu:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim KeyCells As Range
    
    ' The variable KeyCells contains the cells that will
        ' cause an alert when they are changed.
        Set KeyCells = Range("A1:C10")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
               Is Nothing Then
    
    ' Display a message when one of the designated cells has been 
            ' changed.
            ' Place your code here.
            MsgBox "Cell " & Target.Address & " has changed."
    
    End If
    End Sub
    
  3. W menu Plik kliknij polecenie Zamknij i wróć do programu Microsoft Excel.

Po dokonaniu wpisu w komórkach A1:C10 w Arkuszu1 zostanie wyświetlone okno komunikatu.