..|| Blog || Produkti/Storitve || MExcel || MDodatki || 300 nasvetov ||..

Zagon makra

Pomoč pri delu z MS Excelom

Zagon makra

OdgovorNapisal/-a Emol » To jul 24, 2007 12:10 pm

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

Hvala vnaprej
Emol
 
Prispevkov: 36
Pridružen: To mar 13, 2007 11:09 pm
Kraj: Hrastnik



Matjazev.NET
 

OdgovorNapisal/-a admin » To jul 24, 2007 12:54 pm

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

OdgovorNapisal/-a Emol » To jul 24, 2007 6:04 pm

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

OdgovorNapisal/-a admin » Sr jul 25, 2007 7:50 am

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

OdgovorNapisal/-a Emol » Sr jul 25, 2007 8:19 am

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

OdgovorNapisal/-a admin » Sr jul 25, 2007 8:24 am

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


Vrni se na Excel

Kdo je prisoten

Po forumu brska: 0 registriranih uporabnikov in 2 gostov

cron