Pozdravljeni
Na prvem listu imam šifrant računov, ki ga lahko dopolnjuje uporabnik.
Drugi list je vzorec za liste računov. Poimenoval sem ga "Vzorec".
V VBA za vsak račun iz šifranta skopiram list "Vzorec" in ga poimenujem z imenom računa.
Na list Vzorec je vezana tudi koda, ki se s kopiranjem lista tudi kopira.
Da se koda izvede za izbrani list za ime lista uporabim "ActiveSheet.Name".
To deluje, razen pri "Worksheet_Deactivate" ( in pri "Worksheet_Change", če spremembo podatka potrdim s prehodom na nov list).
Razumljivo: Ko izberem drug list, se ime lista zamenja takoj, nato de izvede "Deactivate" za list, ki ga zapuščam, sledi dogodek "Activate" za nov list.
Vprašanje pa je: Ali lahko pri dogodku "Worksheet_Deactivate" dobim ime lista, pri katerem je koda napisana? ( podobno kot "ThisWorkbook.Name").
"ActiveSheet.Name" namreč vrne ime lista, ki je deaktivacijo povzročil.
ps.
Sedaj se rešujem tako, da pri vseh listih pri dogodku "Worksheet_Activate" v public spremenljivko zapišem ime aktivnega lista.
Hvala za vaš trud in lep pozdrav,
Drago
Ime lista - ActiveSheet.Name
Re: Ime lista - ActiveSheet.Name
Pozdravljeni,
Namesto da na vsak list tlačite kodo, jo zapišite na nivo delovnega zvezka. V tem primeru dobite parameter, ki predstavlja delovni zvezek, ki izgublja fokus:
Namesto da na vsak list tlačite kodo, jo zapišite na nivo delovnega zvezka. V tem primeru dobite parameter, ki predstavlja delovni zvezek, ki izgublja fokus:
Koda: Izberi vse
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Debug.Print "workbook: " & Sh.Name
End Sub
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator