excelov problem:iščem rešitev

Pomoč pri delu z MS Excelom
Odgovori
andro
Prispevkov: 36
Pridružen: To Dec 12, 2006 1:40 pm
Kraj: krško

excelov problem:iščem rešitev

Odgovor Napisal/-a andro »

Imam zadevo, ki bi jo rad rešil pa nevem kako! Jaz sprintam excelov dokumet (nek obrazec). Ta obrazev je oštevilčen. Sedaj bi pa rad da mi ob vsakem klikom na gumb print številko obrazca poveča za eno. Se pravi isti obrazec z drugo številko, itd. Se da to zadevo rešit s kodo v Visual Basic(kako)? Ali je kaka druga rešitev?
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Najprej o naslovu tematike. Glede na to, da ste tematiko zapisali v forum 'Excel' je jasno, da imate probleme z Excelom in tudi upam da 'iščete' rešitev. Naslov naj nakaže kaj vas muči. Dober naslov bi bil npr. 'Kako doseči avtomatično številčenje obrazcev ob tiskanju!'

Kar pa se tiče rešitve pa je tudi dokaj trivialna in da, potrebno je poseči po VBA-ju.
  • Odprite Delovni zvezek
  • Izberite Orodja/Makro/Urejevalnik za Visual Basic
  • Odpre se novo okno, kjer imate zgoraj levo drevesno strukturo vaših odprtih odkumentov. V tem drevesu poiščite vaš delovni zvezek in kliknite na +, da se vam odpre struktura
  • Videli boste seznam vseh listov in na koncu tudi opcijo ThisWorkbook. Dvokliknite na ThisWorkBook in odpre se vam novo okno, ki ima na vrhu dva padajoča seznama.
  • Iz levega padajočega seznama izberite opcijo Workbook. Nato pa iz desnega seznama opcijo BeforePrint
  • V kodi se vam izpiše okostje prazne funkcije:

    Koda: Izberi vse

    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    
    End Sub
    
  • Vmes vpišite sledečo kodo, kjer A1 zamenjajte s celico, kjer imate števec

    Koda: Izberi vse

    Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Range("a1") = Range("a1") + 1
    End Sub
    
lp,
Matjaž Prtenjak
Administrator
andro
Prispevkov: 36
Pridružen: To Dec 12, 2006 1:40 pm
Kraj: krško

Odgovor Napisal/-a andro »

Zdravo!

Najprej se opravičujem zaradi res hecnega naslova.

Stvar deluje, imam pa še vprašanje, če je možno to za vsak delovni list posebej. Naprimer da v delovnem listu št.1 mi spreminja celico A1 in v delovnem listu št.2 mi spreminja celico B1 itd.

Hvala!
lp
andro
Prispevkov: 36
Pridružen: To Dec 12, 2006 1:40 pm
Kraj: krško

Odgovor Napisal/-a andro »

Še ena zadeva?

Je možno da pred printanjem, ko vpišem število kopij nap. 10 kopij in da začneš s obrazcem št 1 in da ti nato vsak list številči n+1. Dejansko potem na tem primeru deset listov številčenih od 1-10.

Hvala
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Seveda se da, samo malce morate premisliti ;). V odvisnosti od aktivnega lista pač spreminjate določeno celico:

Koda: Izberi vse

Private Sub Workbook_BeforePrint(Cancel As Boolean)
  If ActiveSheet.Name = "List1" Then Range("A1") = Range("A1") + 1
  If ActiveSheet.Name = "List2" Then Range("D1") = Range("D1") + 1
  If ActiveSheet.Name = "List3" Then Range("E1") = Range("E1") + 1
End Sub
lp,
Matjaž Prtenjak
Administrator
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

:( Tako hitro sprašujete, da ne uspem odgovarjati... Torej odgovor na zadnje vprašanje pa je NE. Če natisnete 10 kopij hkrati bo imelo vseh 10 kopij isto številko (pa saj so kopije ;))!
lp,
Matjaž Prtenjak
Administrator
andro
Prispevkov: 36
Pridružen: To Dec 12, 2006 1:40 pm
Kraj: krško

Odgovor Napisal/-a andro »

Hvala za pomoč!
Stvar deluje pravilno.

Le če mi lahko še poveste kako napisat kodo da mi dve celice spreminja. Poskusil sem že na različne načine pa ne ugotovim.

lp
Andrej
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Upam, da vas "muči" samo struktura IF stavka, zatorej:

Koda: Izberi vse

Private Sub Workbook_BeforePrint(Cancel As Boolean)
  If ActiveSheet.Name = "List1" Then 
      Range("A1") = Range("A1") + 1
      Range("B1") = Range("B1") + 1
  End if

  If ActiveSheet.Name = "List2" Then 
    Range("D1") = Range("D1") + 1
    Range("D4") = Range("D4") + 1
  End IF

  ' in tako dalje
End Sub
lp,
Matjaž Prtenjak
Administrator
Odgovori