Mogoče je že bilo ...
Kako naj ob spremembi vrednosti v celici (AfterUpdate event) zaženem določeni makro (ali funkcijo).
Hvala vnaprej
Zagon makra
Od kot vam v Excelu AfterUpdate dogodek???
Če vas prav razumem, vi potrebujete dogodek Worksheet_Change in posledično je tudi odgovor na vaše vprašanje povsem trivialen. V VBA urejevalniku se pač odzovete na dogodek Worksheet_Change:
Če vas prav razumem, vi potrebujete dogodek Worksheet_Change in posledično je tudi odgovor na vaše vprašanje povsem trivialen. V VBA urejevalniku se pač odzovete na dogodek Worksheet_Change:
Koda: Izberi vse
Private Sub Worksheet_Change(ByVal Target As Range)
' tukaj sedaj napišete poljubna programsko kodo
' ali pa zaženete poljuben makro
End Sub
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
zakaj potem ta koda ne dela:
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case List1.Cells(4, 6)
Case Is < 50
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.06
Case 50 To 75
List1.Cells(5, 6) = 3
Case 75 To 100
List1.Cells(5, 6) = 3
Case 100 To 200
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.03
Case 200 To 300
List1.Cells(5, 6) = 6
Case 300 To 500
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.02
Case 500 To 1000
List1.Cells(5, 6) = 10
Case 1000 To 5000
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.01
End Select
End Sub
Če zadevo posnamem kot makro in zaženem prek gumba - dela
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case List1.Cells(4, 6)
Case Is < 50
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.06
Case 50 To 75
List1.Cells(5, 6) = 3
Case 75 To 100
List1.Cells(5, 6) = 3
Case 100 To 200
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.03
Case 200 To 300
List1.Cells(5, 6) = 6
Case 300 To 500
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.02
Case 500 To 1000
List1.Cells(5, 6) = 10
Case 1000 To 5000
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.01
End Select
End Sub
Če zadevo posnamem kot makro in zaženem prek gumba - dela
Vi v dogodku spremembe vsebine lista zopet povzročite spremembo vsebine lista in kaj se zgodi .... neskončno zankanje! V takšnem primeru, kot je vaš morate pač Excelu zaukazati, naj sprememb ne registrira, dokler ste znotrej odziva na dogodek:
Koda: Izberi vse
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case List1.Cells(4, 6)
Case Is < 50
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.06
Case 50 To 75
List1.Cells(5, 6) = 3
Case 75 To 100
List1.Cells(5, 6) = 3
Case 100 To 200
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.03
Case 200 To 300
List1.Cells(5, 6) = 6
Case 300 To 500
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.02
Case 500 To 1000
List1.Cells(5, 6) = 10
Case 1000 To 5000
List1.Cells(5, 6) = List1.Cells(4, 6) * 0.01
End Select
Application.EnableEvents = True
End Sub
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator