..|| Blog || Produkti/Storitve || MExcel || MDodatki || 300 nasvetov ||..

Vpis številke zadnje vrstice v makro

Pomoč pri delu z MS Excelom

Vpis številke zadnje vrstice v makro

OdgovorNapisal/-a b92 » To jun 23, 2009 5:38 pm

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
b92
 
Prispevkov: 12
Pridružen: To jun 23, 2009 3:09 pm



Matjazev.NET
 

OdgovorNapisal/-a cedra » To jun 23, 2009 6:21 pm

Če prav razumem, potem nekaj takega:
Koda: Izberi vse
Range(Range("L2"), Range("L2").End(xlDown)).Select
lp,

cedra
cedra
 
Prispevkov: 263
Pridružen: Po jul 25, 2005 11:11 pm
Kraj: Kamnik

OdgovorNapisal/-a b92 » To jun 23, 2009 7:43 pm

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
b92
 
Prispevkov: 12
Pridružen: To jun 23, 2009 3:09 pm

OdgovorNapisal/-a admin » Sr jun 24, 2009 7:05 am

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
admin
Site Admin
 
Prispevkov: 3492
Pridružen: Sr jul 20, 2005 10:06 pm

OdgovorNapisal/-a b92 » Sr jun 24, 2009 1:04 pm

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 ?
b92
 
Prispevkov: 12
Pridružen: To jun 23, 2009 3:09 pm

OdgovorNapisal/-a admin » Sr jun 24, 2009 1:27 pm

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
admin
Site Admin
 
Prispevkov: 3492
Pridružen: Sr jul 20, 2005 10:06 pm

OdgovorNapisal/-a b92 » Sr jun 24, 2009 2:49 pm

Stvar deluje.
Najlepša hvala za pomoč.
b92
 
Prispevkov: 12
Pridružen: To jun 23, 2009 3:09 pm


Vrni se na Excel

Kdo je prisoten

Po forumu brska: 0 registriranih uporabnikov in 2 gostov

cron