Vpis številke zadnje vrstice v makro

Pomoč pri delu z MS Excelom
Odgovori
b92
Prispevkov: 12
Pridružen: To Jun 23, 2009 3:09 pm

Vpis številke zadnje vrstice v makro

Odgovor Napisal/-a b92 »

Imam tabelo v kateri se veliko spreminja število zapisov.

Da ne bi vedno popravljal makra z Range("A65536").End(xlUp).Select ugotavljam zadnjo izpolnjeno vrstico v tabeli.

Ne vem kako v makru vpisati to številko zadnje vrstice obseg kolone v Destination:=Range("L2:L140") in Range("L2:L140").Select ?

Hvala za pomoč.


Primer :

Koda: Izberi vse

Sub Makro1()

    ' --- zadnja polna celica v tabeli ---
    Range("A65536").End(xlUp).Select
    
    ' --- polnim kolono od druge vrstice do zadnje vrstice ---    
    Range("L2").Select
    ActiveCell.FormulaR1C1 = "=DATE(YEAR(NOW()), MONTH(NOW()), DAY(NOW())-5)"
    Selection.AutoFill Destination:=Range("L2:L140"), Type:=xlFillDefault
    Range("L2:L140").Select
    
End Sub
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Če prav razumem, potem nekaj takega:

Koda: Izberi vse

Range(Range("L2"), Range("L2").End(xlDown)).Select
lp,

cedra
b92
Prispevkov: 12
Pridružen: To Jun 23, 2009 3:09 pm

Odgovor Napisal/-a b92 »

Hvala za odgovor.
Če sem pravilno razumel naj bi makro izgledal tako:

Koda: Izberi vse

Sub Makro3()
    
    Range("A65536").End(xlUp).Select
    
    Range("L2").Select
    ActiveCell.FormulaR1C1 = "=DATE(YEAR(NOW()), MONTH(NOW()), DAY(NOW())-5)"
    Selection.AutoFill Destination:=Range(Range("L2"),  Range("L2").End(xlDown)), Type:=xlFillDefault
 
    Range(Range("L2"), Range("L2").End(xlDown)).Select

Und Sub
Tako popravljen makro napolni znake od 1. do 65536. vrste ne pa od 1. vrste do zadnje izpolnjene vrste..

Če pa zamenjam xlDown z xlUp izpolni makro samo vrsto 1 in 2.

Koda: Izberi vse

Sub Makro3()
    
    Range("A65536").End(xlUp).Select
    
    Range("L2").Select
    ActiveCell.FormulaR1C1 = "=DATE(YEAR(NOW()), MONTH(NOW()), DAY(NOW())-5)"
    Selection.AutoFill Destination:=Range(Range("L2"),  Range("L2").End(xlUp)), Type:=xlFillDefault
 
    Range(Range("L2"), Range("L2").End(xlUp)).Select

Und Sub
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Hm... Čemu služi prvi select stavek v makru? Glede na že zapisano kodo in glede na vaše želje bi moral biti makro zapisan takole:

Koda: Izberi vse

Sub Makro3()
    Range("L2").Select
    ActiveCell.FormulaR1C1 = "=DATE(YEAR(NOW()), MONTH(NOW()), DAY(NOW())-5)"
    Selection.AutoFill Destination:=Range(Range("L2"),  Range("L65536").End(xlUp)), Type:=xlFillDefault
 
    Range(Range("L2"),  Range("L65536").End(xlUp)).Select
Und Sub
lp,
Matjaž Prtenjak
Administrator
b92
Prispevkov: 12
Pridružen: To Jun 23, 2009 3:09 pm

Odgovor Napisal/-a b92 »

Makro sem prekopiral in izvedel.
Vrstici

Koda: Izberi vse

    Range("L2").Select
    ActiveCell.FormulaR1C1 = "=DATE(YEAR(NOW()), MONTH(NOW()), DAY(NOW())-5)"
napolnita celico L2, vrstica

Koda: Izberi vse

Selection.AutoFill Destination:=Range(Range("L2"),  Range("L65536").End(xlUp)), Type:=xlFillDefault
javi sledečo napako:

Run-time error '1004':
Metoda Autofill razreda Range ni uspela.

Ali mi lahko še kaj svetujete ?
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Aha, sem spregledal, da vi želite napolniti stvar do tam, kjer je zadnja polna vrstica kolone A in ne L. Makro vam je "crknil", ker je pričakoval podatke v koloni L... Popravljen makro je torej takšenle:

Koda: Izberi vse

Sub Makro3()
  Dim zadnjaPolna
  zadnjaPolna = Range("A65536").End(xlUp).Row

  Range("L2").Select
  ActiveCell.FormulaR1C1 = "=DATE(YEAR(NOW()), MONTH(NOW()), DAY(NOW())-5)"
  Selection.AutoFill Destination:=Range(Range("L2"), Cells(zadnjaPolna, 12)), Type:=xlFillDefault
End Sub
Oziroma enakovreden (boljši, hitrejši...) makro...

Koda: Izberi vse

Sub Makro4()
  Dim zadnjaPolna: zadnjaPolna = Range("A65536").End(xlUp).Row
  Range(Range("L2"), Cells(zadnjaPolna, 12)).FormulaR1C1 = "=DATE(YEAR(NOW()), MONTH(NOW()), DAY(NOW())-5)"
  Range(Range("L2"), Cells(zadnjaPolna, 12)).Select
End Sub
lp,
Matjaž Prtenjak
Administrator
b92
Prispevkov: 12
Pridružen: To Jun 23, 2009 3:09 pm

Odgovor Napisal/-a b92 »

Stvar deluje.
Najlepša hvala za pomoč.
Odgovori