Kako se v VBA uporabljajo imena določena v delovnem zvezku

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

Kako se v VBA uporabljajo imena določena v delovnem zvezku

Odgovor Napisal/-a dragopre »

Pozdravljeni

V Excelu sem poimenoval območje "Clani" in mu dinamično določil obseg (Clani - =OFFSET(Šifranti!$B$10;0;0;COUNTA(Šifranti!$B$10:$B$119);2) ) .

V Makru bi rad uporabil to ime, pa imam težave.
Tole je izsek iz kode:

Koda: Izberi vse

    Dim XClani As Range
    Set XClani = Range(WB.Names("Clani").RefersTo)
            
    Obdelaj ZbirPor, _
            XClani, _
            Sheets("Šifranti").Range("E10:E39"), _
            Sheets("vnos").Range("B35:L44"), _
            Sheets("vnos").Range("I14"), _
            SelUdel
Na ukazu "Set XClani = Range(WB.Names("Clani").RefersTo)" javi napako: Method 'Range' of object '_Global' failed.
Ko pa potek spremljam z Debug, pa napake ne javi in tudi Range "XClani" dobi pravo vsebino.



Lep pozdrav,
Drago
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Kako se v VBA uporabljajo imena določena v delovnem zvez

Odgovor Napisal/-a admin »

Pozdravljeni,

Območja so lahko lokalna (na listu) ali globalna (veljajo za celoten delovni zvezek). V prvem primeru jih je potrebno klicati oz. uporabljati z imenom lista List1!Clani v drugem primeru pa je ime globalno... Iz vašega vprašanja sklepam, da vam pri klicu manjka ime lista; torej:

Koda: Izberi vse

  Set XClani = Range(WB.Names("List5!Clani").RefersTo)
lp,
Matjaž Prtenjak
Administrator
dragopre
Prispevkov: 105
Pridružen: To Dec 11, 2012 11:46 pm

Re: Kako se v VBA uporabljajo imena določena v delovnem zvez

Odgovor Napisal/-a dragopre »

Pozdravljeni,

Vsa imena imam globalna ( Na pregledu "Upravitelj imen" imajo obseg "Delovni zvezek").

Zanimivo pa je, ko po napaki nadaljujem z F8 ne javi več napake in deluje pravilno.

Lep pozdrav,
Drago
dragopre
Prispevkov: 105
Pridružen: To Dec 11, 2012 11:46 pm

Re: Kako se v VBA uporabljajo imena določena v delovnem zvez

Odgovor Napisal/-a dragopre »

Pozdravljeni

No, ugotovil sem naslednje:
V VB javi napako, če imam ime "Clani" določeno takole:

Koda: Izberi vse

=OFFSET(Šifranti!$B$10;0;0;COUNTA(Šifranti!$B$10:$B$119);2)
Če pa ime določim enostavno takole:

Koda: Izberi vse

=Šifranti!$B$10:$B$119
pa v VB ni napake.

Bom pač v VB izločal prazne celice.

Lep pozdrav,
Drago
Odgovori