Vba: jak uruchomić makro, gdy zmienia się wartość komórki


Możesz użyć następującej składni w VBA, aby uruchomić makro, gdy zmieni się wartość określonej komórki:

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

Ten konkretny przykład spowoduje uruchomienie makra o nazwie MultiplyMacro , gdy zmieni się wartość komórki A1 .

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Uruchom makro, gdy wartość komórki ulegnie zmianie za pomocą VBA

Załóżmy, że tworzymy następujące makro o nazwie MultiplyMacro , które mnoży wartości w komórkach A1 i B1 i wyświetla wyniki w komórce C1 :

 SubMultiplyMacro ()
    Range(" C1 ") = Range(" A1 ") * Range(" B1 ")
End Sub

Załóżmy na przykład, że mamy wartość 12 w komórce A1 i wartość 3 w komórce B1 .

Jeśli uruchomimy to makro, otrzymamy następujący wynik:

Załóżmy teraz, że chcemy automatycznie uruchamiać to makro za każdym razem, gdy zmieni się wartość komórki A1 .

Aby to zrobić, możemy kliknąć prawym przyciskiem myszy nazwę arkusza, a następnie kliknąć Pokaż kod :

W wyświetlonym oknie edycji kodu możesz wkleić następujący kod:

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

Poniższy zrzut ekranu pokazuje, jak to zrobić w praktyce:

Możemy wtedy zamknąć edytor VB.

Teraz za każdym razem, gdy zmienimy wartość w komórce A1 , makro o nazwie MultiplyMacro zostanie automatycznie uruchomione i wykona mnożenie przy użyciu nowej wartości w komórce A1 .

Załóżmy na przykład, że zmieniamy wartość komórki A1 na 10 . Gdy tylko zmienimy wartość i wciśniemy Enter makro uruchomi się:

Makro mnoży 10 przez 3 i wyświetla wynik w komórce C2 .

Uwaga : Jeśli chcesz uruchomić makro, gdy zmieni się komórka w określonym zakresie, możesz użyć następującej składni:

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

Spowoduje to uruchomienie makra o nazwie MultiplyMacro , jeśli jakakolwiek komórka w zakresie A1:B1 ulegnie zmianie.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:

VBA: Jak policzyć liczbę arkuszy w skoroszycie
VBA: Jak wyodrębnić dane z innego skoroszytu
VBA: Jak dodać nowe arkusze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *