» »

Excel: tiskanje po vrsticah

Excel: tiskanje po vrsticah

luksorzi ::

Se da naredit skripto ki bo šla po vrsticah v excelu, preverila eno polje v vrstici. Če je v tem polu "x", se ta vrstica po celicah prekopira na drug list, ki je pripravljen za tisk in nato natisne.

Kako se tega sploh lotit, da bo najbolj elegantno. Mogoče drugačen postopek? V Excelu znam osnove, za kaj več mi pa škriplje.

borisk ::

luksorzi ::

Trenutno se zezam s temle:
http://www.exceltrainingvideos.com/auto...

eales ::

Na prvem lisu filtritaš stolpec kjer imaš x, da ti prikazuje samo vrstice z x-om
Nato označiš celotno tabelo
klikneš: file, print
Pod setting klikneš: "print selection", nato lahko daš še: "Fit sheet on one page" in natisneš

Mogoče je rezultat tak, kot ga rabiš :)

anko ::

Makro, ni druge.
Narediš, da ti pač gre od prve do zadnje vrstice in ko naleti na "x" v vrstici:

kopiraš celo vrstico
WorkBook.Sheets("Sheet1").Rows(x).EntireRow.Copy

se prestaviš na ustrezno celico na novem listu
WorkBook.Sheets("Sheet2").Range("A"&x).Select

in prilepiš
WorkBook.Sheets("Sheet2").Paste

Seveda to v for zanko "x= 1 to LastRow" skupaj z IF cellValue="karkoli" then ...

@eales - tudi to je varianta... s filtrom. Pa lahko potem tudi ročno kopiraš na drug list.

Zgodovina sprememb…

  • spremenil: anko ()

luksorzi ::

Tole je bilo pa bolj preprosto, kot sem mislil :)


Sub RoundedRectangle1_Click()
    Dim i As Long
    For i = 2 To Rows.Count
    'začnem v 2. vrstici
        If Cells(i, 2).Value = "x" And Not IsEmpty(Cells(i, 2).Value) Then
            Sheets("Sheet2").Cells(3, 3) = Cells(i, 1)
            'skopiram celico i,1 v celico 3,3 na listu Sheet2
            Sheets("Sheet2").PrintOut From:=1, To:=1, Copies:=1
        End If
    Next i
End Sub

anko ::

luksorzi je izjavil:

Tole je bilo pa bolj preprosto, kot sem mislil :)


Tole ti funkcionira?
V FOR zanki ti Rows.Count zmeraj, da vrednost 1048576. V IF stavku ne rabiš še "And Not..."
Zakaj vedno v isto celico kopiraš? Imaš samo en podatek?

Poskusi tole varianto:
Sub RoundedRectangle1_Click()
    Dim i As Long
    LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
    x = 3
    'ce hoces vedno zaceti v 3 vrstici na drugem listu
    For i = 2 To LastRow
    'zacnem v 2. vrstici
        If Cells(i, 2).Value = "x" And Not IsEmpty(Cells(i, 2).Value) Then
            Sheets("Tabelle2").Cells(x, 3) = Cells(i, 1)
            ' skopiram celico i,1 v celico 3,3 na listu Sheet2
            x = x + 1
            'povecam vrstico v katero bom kopiral za eno
        End If
    Next i
    Sheets("Sheet2").PrintOut From:=1, To:=1, Copies:=1
    'printas sele, ko si skopiral vse vrednosti
End Sub


Če imaš dejansko samo en podatek, ki ga moraš skopirati in nato natisniti, je sicer tvoja varianta ok, sam bi edino štetje zadnje vrstice popravil, ker v tvojem primeru ti bo šlo čez cel worksheet, kar pri Excelu od verzije 2007 pomeni dober milijon vrstic.

Zgodovina sprememb…

  • spremenil: anko ()

luksorzi ::

Eno celico kopiram samo za prikaz, imam več polj za izpolnit. Gre čez vse vrstice, ampak ne traja dolgo ker, če je celica z "x" prazna, gre takoj v naslednjo vrstico And Not bi pa res lahko izpustil. Tam ostal, ko sem kopiral del druge kode. Je pa s tvojim popravkom precej hitreje - hvala.
V isto celico zato, ker imam predlogo za tiskanje in v to predlogo vnašam podatke iz tabele.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

excel help

Oddelek: Pomoč in nasveti
152142 (1907) klemenSLO
»

Calc/excel delo s tabelo

Oddelek: Programiranje
131365 (1132) salabajs
»

[Excel]Kako izvleči vrednost?

Oddelek: Programiranje
223659 (3382) Mobidick
»

Prosim za pomoč pri VBA

Oddelek: Programiranje
351972 (1775) apachee
»

Visual Basic in Excel

Oddelek: Programiranje
262519 (2085) Vesoljc

Več podobnih tem