Zagon makra

Pomoč pri delu z MS Excelom
Odgovori
Emol
Prispevkov: 36
Pridružen: To Mar 13, 2007 11:09 pm
Kraj: Hrastnik

Zagon makra

Odgovor Napisal/-a Emol »

Mogoče je že bilo ...
Kako naj ob spremembi vrednosti v celici (AfterUpdate event) zaženem določeni makro (ali funkcijo).

Hvala vnaprej
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

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:

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
Emol
Prispevkov: 36
Pridružen: To Mar 13, 2007 11:09 pm
Kraj: Hrastnik

Odgovor Napisal/-a Emol »

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
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

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
Emol
Prispevkov: 36
Pridružen: To Mar 13, 2007 11:09 pm
Kraj: Hrastnik

Odgovor Napisal/-a Emol »

Zdaj pa gre.
Pa še nekaj:

Ali je možno preveriti spremembo v točno določeni celici in če sprememba je, sprožiti določen makro ali kodo?
Nekaj takega kot: If Target ("B12") Then Call ....

Hvala lepa za trud
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Uporabite opcijo Išči (zgoraj v forumu) in vpišite iskalni niz Worksheet_Change - našli boste kar nekaj tematik in v njih tudi rešitev vašega problema.
lp,
Matjaž Prtenjak
Administrator
Odgovori