< návrat zpět
MS Excel
Téma: Spuštění makra na základě změny hodnot v buňce
Zaslal/a Poseidon 6.4.2020 14:40
Dobrý den,
pokouším se napsat VBA kód, který by při změně hodnoty v určité buňce (v mém příkladu K3) spustil určité makro. Na buňku K3 mám navázaný rozevírací seznam o 2 položkách, když je zvolena 1. položka seznamu, v buňce K3 je zapsáno 1, když je zvolena 2. položka seznamu, v buňce K3 je zapsáno 2.
Kód mám zapsaný takto:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyCellRange As Range
Set MyCellRange = Range("K3")
If MyCellRange.Value = 1 Then
Call Macro1
ElseIf MyCellRange.Value = 2 Then
Call Macro2
If Not Application.Intersect(MyCellRange, Range(Target.Address)) _
Is Nothing Then
End If
End Sub
Takto zapsáno mi to ale nefunguje. Potřeboval bych, aby se požadované makro spustilo automaticky pokaždé, když uživatel vybere novou hodnotu rozevíracího seznamu (tzn. při každé změně z 1 na 2, nebo ze 2 na 1).
Děkuji za příp. odpovědi.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyCellRange As Range
Set MyCellRange = Range("K3")
If Not Intersect(MyCellRange, Target) Is Nothing Then
Select Case MyCellRange.Value
Case 1: Call Macro1
Case 2: Call Macro2
End Select
End If
End Sub
Ak nechcete, aby sa vykonalo makro pri zmene 1->1 (teda rovnakej hodnoty), tak treba niekam ukladať starú hodnotu a porovnať. Napr. do nepoužívanej bunky, alebo na skrytý list, alebo použiť globálnu premennú v module. Viď príloha.
Příloha: 46384_makro-podla-hodnoty.zip (14kB, staženo 28x) citovat
Poseidon(7.4.2020 11:15)#046395 elninoslov:
Moc děkuji za opravu kódu. Funguje perfektně. Spuštění makra při změně 1 -> 1 mi v mém případě nevadí, ale děkuji za přílohu, kterou si i tak uložím :-)
citovat