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