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