Ime lista - ActiveSheet.Name

Pomoč pri izdelavi makrov
Odgovori
dragopre
Prispevkov: 105
Pridružen: To Dec 11, 2012 11:46 pm

Ime lista - ActiveSheet.Name

Odgovor Napisal/-a dragopre »

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

Re: Ime lista - ActiveSheet.Name

Odgovor Napisal/-a admin »

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:

Koda: Izberi vse

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
  Debug.Print "workbook: " & Sh.Name
End Sub
lp,
Matjaž Prtenjak
Administrator
Odgovori