Makro po zmianie komórki programu Excel - porady dotyczące programu Excel

Spisie treści

Kilku czytelników zadało pytania, które wymagają, aby Excel uruchamiał sekcję makra za każdym razem, gdy wartość zmienia się w arkuszu kalkulacyjnym Excel.

Po pierwsze, ulepszona metoda dostępna tylko w XL97: Excel 97 ma kilka nowych programów obsługi zdarzeń, które umożliwiają uruchamianie makra za każdym razem, gdy zmienia się komórka.

Załóżmy, że za każdym razem, gdy w kolumnie A zostanie wprowadzona wartość większa niż 100, chcesz sformatować komórkę obok niej tak, aby była czerwona.

  • Otwórz Visual Basic Edit (Narzędzia> Makro> Edytor Visual Basic)
  • W lewym oknie kliknij prawym przyciskiem Arkusz1 i wybierz Wyświetl kod.
  • W górnej części okna dialogowego Book1 - Sheet1 Code znajdują się dwa menu rozwijane. Z menu rozwijanego po lewej stronie wybierz opcję Arkusz. Z menu po prawej stronie wybierz Zmień.
  • Wpisz następujące wiersze kodu:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Column = 1 Then ThisRow = Target.Row If Target.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

To makro zostanie uruchomione za każdym razem, gdy wartość w komórce zostanie zmieniona. Zmienna Cel powie Ci, która komórka i nowa wartość komórki. Co zaskakujące, stosowanie tej metody nie spowalnia znacząco procesu.

Zwróć uwagę, że makro pozostanie aktywne, dopóki arkusz jest otwarty lub dopóki nie uruchomisz makra z następującym wierszem:

Application.EnableEvents = False

/ p> W programie Excel 95 / 7.0: Musisz użyć metody OnEntry. Określasz makro, które chcesz uruchomić po wprowadzeniu dowolnej wartości. W tym przypadku zmienna Application.Caller zawiera adres i wartość, które uległy zmianie. Wprowadź następujące dane w nowym module:

Sub AutoOpen() Worksheets("Sheet1").OnEntry = "CheckIt" End Sub Sub CheckIt() If Application.Caller.Column = 1 Then ThisRow = Application.Caller.Row If Application.Caller.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

Sprawdzanie OnEntry pozostanie aktywne do momentu uruchomienia makra z następującym kodem:

Worksheets("Sheet1").OnEntry = False

Interesujące artykuły...