KOPIRANJE V DRUG LIST

Pomoč pri delu z MS Excelom
Odgovori
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Zdravo,

Konkretno za vaš primer, bi koda izgledala takole:

Koda: Izberi vse

  Sub Prepisi()
    List1.Range("A4:C100").Copy List2.Range("D100")
  End Sub
Ta koda vam iz lista 1 skopira podatke od A4 do C100 na list2 od D100 dalje.

Funkcijo pa na gumb vežete preprosto tako, da narišete nov gumb in nanj vežete funkcijo Prepisi.
  1. Odprete orodno vrstico Obrazci
  2. Na njej poiščete gumb in ga narišete na vaš DZ
  3. Odpre se novo okno, kjer samo izberite vaš novi makro
  4. Ko boste kliknili gumb se bo izvedel izbrani makro
lp,
Matjaž Prtenjak
Administrator
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Najprej morate ugotoviti katera je zadnja pona vrstica in nato pisati v naslednjo:

Koda: Izberi vse

Sub Prepisi()
    Dim zadnja_vrstica As Long
    zadnja_vrstica = List2.Range("D65536").End(xlUp).Row
    List1.Range("A4:C100").Copy List2.Range("D" & (zadnja_vrstica + 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 »

Hm,

Na to sem vam že odgovarjal, pa sem očitno pozabil pritisniti gumb 'Pošlji'. Definitivno pa sem odgovarjal, ker vem, da sem se razpisal, kako se nisva mogla narobe razumeti, saj dosedaj niste nikoli govorili, da bi želeli vrstice in kolone obračati....

Kakorkoli, makro je majhen in preprost:

Koda: Izberi vse

Sub Prepisi()
    Dim zadnja_vrstica As Long
    zadnja_vrstica = List2.Range("A65536").End(xlUp).Row
    
    If (List2.Cells(zadnja_vrstica, 1).Value <> "") Then zadnja_vrstica = zadnja_vrstica + 1
    
    Dim i As Integer
    For i = 1 To 10
      List2.Cells(zadnja_vrstica, i) = List1.Cells(i, 1)
    Next
End Sub
lp,
Matjaž Prtenjak
Administrator
Fatso
Prispevkov: 42
Pridružen: Ne Jan 07, 2007 2:01 pm
Kraj: Ljubljana
Kontakt:

Dodatno vprašanje k napisanemu

Odgovor Napisal/-a Fatso »

Pozdravljeni,

kako pa se v napisanem makru izognem fiksnemu poimenovanju listov (List1, List2)?
Sam bi na en list (npr. Skupaj) želel združiti podatke iz vseh ostalih listov, imena katerih pa so vsakič drugačna.

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

Odgovor Napisal/-a admin »

Uporabite objekt WorkSheets:

Koda: Izberi vse

Worksheets(<ime lista>).Range...

npr. namesto:
List2.Cells(zadnja_vrstica, i)

napišite:
Worksheets("list2").Cells(zadnja_vrstica, i)
lp,
Matjaž Prtenjak
Administrator
Odgovori