Workbooks Close

Pomoč pri izdelavi makrov
Odgovori
Stenly
Prispevkov: 223
Pridružen: Sr Jul 27, 2005 11:29 pm

Workbooks Close

Odgovor Napisal/-a Stenly »

Pozdravljeni

Imam Zvezek_1, v njemu formo & nekaj kode. Želel bi zapreti zvezek ob tem, ko zaprem formo (klik na X).
Spodaj je koda. Mislim pa, da ni izbran pravi trenutek (UserForm_Terminate), za izvedbo kode. Večkrat (v večini ne - ampak je moteče) mi pride do neke napake (javi okno za izvedbo samopopravkov), potem se pa Excel kompletno zapre.
Je možno izbrat še kak drug dogodek za za izvedbo te kode?

Koda: Izberi vse

Private Sub UserForm_Terminate()
'
    Workbooks("Zvezek_1.xls").Close SaveChanges:=False
    
End Sub
Lep pozdrav
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Jaz osebno bi dal kodo, ki zapre delovni zvezek kompletno iz kode v samem oknu, ter jo prestavil v funkcijo, ki prikaže okno. Sklepam, da okno prikažete modalno, kar pomeni, da VBA čaka na zaprtje Okna preden nadaljuje z makrom in jaz bi dal kodo za zaprtje zvezka tja:

Koda: Izberi vse

   ...
   MojeOkno.Show 1
   Workbooks("Zvezek_1.xls").Close SaveChanges:=False 
lp,
Matjaž Prtenjak
Administrator
Stenly
Prispevkov: 223
Pridružen: Sr Jul 27, 2005 11:29 pm

Odgovor Napisal/-a Stenly »

Hvala za pomoč.

Lp
sdfpo
Prispevkov: 31
Pridružen: To Feb 02, 2010 9:06 pm

Odgovor Napisal/-a sdfpo »

imam podoben problem

z ukaznim gumbom, ki se nahaja v userform okencu bi rad shranjeval in zapiral celoten workbook

kako to izvesti?

pa še nekaj
recimo če imam v excelu poimenovano eno območje (več celic)
ali lahko to ime uporabim v VBA? kako?
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

sdfpo napisal/-a:z ukaznim gumbom, ki se nahaja v userform okencu bi rad shranjeval in zapiral celoten workbook

kako to izvesti?
Preprosto:

Koda: Izberi vse

Private Sub CommandButton1_Click()
  ThisWorkbook.Save
  ThisWorkbook.Close saveChanges:=False
End Sub
sdfpo napisal/-a: recimo če imam v excelu poimenovano eno območje (več celic)
ali lahko to ime uporabim v VBA? kako?
Da! Prilagam primer, kjer v celotnem območju odebelite črke:

Koda: Izberi vse

  range("<ime vašega območja>").Font.Bold = true
PS: Kje najdete takšna imena 'sdfpo'? :o
lp,
Matjaž Prtenjak
Administrator
sdfpo
Prispevkov: 31
Pridružen: To Feb 02, 2010 9:06 pm

Odgovor Napisal/-a sdfpo »

hvala za tako hiter odgovor

mogoce sem prej pozabil omeniti, da mi ta "navaden način" ne dela
no zdaj sem pa ze ugotovil zakaj

workbook meddrugin vsebuje tudi ukaz da izbriše 2 lista preden shrani

Koda: Izberi vse

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Sheets(Array("list1", "list2")).Select
    ActiveWindow.SelectedSheets.Delete
End Sub
ki onemogoči shranjevanje in zapiranje workbooka

zakaj ? kako bi se dalo drugace rešiti? lista se nikoli ne smeta shraniti

se nekaj
kaj je narobe

Koda: Izberi vse

    c = Worksheets("list").Range("A6:A300").Find(iskanitekst)
    vrstica = c.Row    
rad bi izvedel številko vrstice v kateri najde iskanitekst
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

  1. Brisanje dveh listov nima nobene zveze s shranjevanjem - napako imate nekje drugje v makrih! Če ne vrjamete, odprite prazen DZ in vanj vpišite kodo, ki ste jo pripisali tukaj - in zvezek shranite - vse deluje OK ;)... (PS: Seveda pa morata lista obstajati, da ju lahko izberete!)
  2. Funkcija Find vrača objekt (območje), zato ga morate prirediti z ukazom Set!

    Koda: Izberi vse

        Set c = Worksheets("list").Range("A6:A300").Find(iskanitekst)
        vrstica = c.Row
    
lp,
Matjaž Prtenjak
Administrator
sdfpo
Prispevkov: 31
Pridružen: To Feb 02, 2010 9:06 pm

Odgovor Napisal/-a sdfpo »

tudi ce odprem nov DZ in vpisem kodo

Koda: Izberi vse

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Sheets(Array("list1", "list2")).Select
    ActiveWindow.SelectedSheets.Delete
End Sub
in poženem makro

Koda: Izberi vse

Sub Macro2()
    ThisWorkbook.Save
End Sub
se ne zgodi nič, niti ne shrani, niti ne izbriše lista, niti ne javi nobene napake. lista seveda obstajata

drugače če sam kliknem na shrani pa deluje
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Ne, če uporabite ukaz Save iz kode potem omenjena koda (zapisana v BeforeSave) ne bo delovala, saj je tako določeno v samem Excelu.

Več si lahko preberete tukaj: MS tehnična pomoč
lp,
Matjaž Prtenjak
Administrator
sdfpo
Prispevkov: 31
Pridružen: To Feb 02, 2010 9:06 pm

Odgovor Napisal/-a sdfpo »

aha....bom ze kaj drugega pogruntal

hvala

lp
Odgovori