28. januar 2009 - 11:21Der er
12 kommentarer og 1 løsning
Udskrivning af kolonne
Hvordan udskriver jeg 2 kolonner arket består af 8 kolonner og >200 rækker, men det skal være sådan at på papiret bliver de 2 kolonner gentaget, så jeg kan nøjes med der kommer 1-2 stk. papir fremfor en regnskov. Bagefter skal jeg prøve at få det til at fungere med en macro knap.
Hvad mener du med, at de 2 kolonner skal gentages?
Hvis du bare vil have begrænset udskriften til at omfatte en del af dit ark, så marker de 2 kolonner, evt. bare så langt ned, som der er indhold. Filer > Udskriftsområde > Angiv udskriftsområde.
Nedenstående er ikke testet, men ideen er at fylde et andet ark med værdierne, og skifte kolonne for hver sideskift. Her er kun vist for én kolonne.
Sub test() Set target = Worksheets("Ark2").Range("A1") i = 0 For Each c In Worksheets("Ark1").Range("A1:A200") target.Value = c.Value If c.PageBreak Then Set target = target.Cells(1, target.Row + 1) Else Set target = target.Offset(i) i = i + 1 End If Next End Sub
Sub test() Set target = Worksheets("Ark2").Range("A1") i = 0 For Each c In Worksheets("Ark1").Range("A1:A200") target.Offset(i) = c.Value If c.PageBreak Then Set target = target.Cells(1, target.Row + 1) i=0 Else i = i + 1 End If Next End Sub
Når jeg køre Makroen kopier den bare kolonne A på ark1 over til ark2 og derefter sker der intet. Meningen var at jeg skulle have kolonnen udskrevet, så den fordelte sig "knækkede" på a4 siden, dvs. at der optrådte f.eks 3 kolonder på en side. markroen ser nu sådan ud: Sub test() Set target = Worksheets("Ark2").Range("A1") i = 0 For Each c In Worksheets("Ark1").Range("A1:A200") target.Offset(i) = c.Value If c.Columns(1).PageBreak <> xlPageBreakNone Then Set target = target.Cells(1, target.Columns + 1) i = 0 Else i = i + 1 End If Next End Sub
Sub test() Dim Skift As Variant, R As Long, K As Integer, I As Integer, Antal As Integer, RKN As Variant FraArk = "Ark1" ' Arket hvorfra de 2 kolonner hentes TilArk = "Ark2" ' arket, hvor de skal over til Antal = Worksheets(FraArk).HPageBreaks.Count ' hvor mange sideskift, er der på fra arket For I = 1 To Antal RKN = RKN & Worksheets(FraArk).HPageBreaks(I).Location & ";" ' hvilke rækker Next Skift = Split(cFull, ";") 'læser rækkenumrene R = 1 K = 1 For I = 0 To UBound(Skift) - 1 Worksheets(FraArk).Range("A" & R & ":B" & Skift(I) - 1).Copy Worksheets(TilArk).Cells(1, K) ' bruger rækkenumrene til at finde data R = Skift(I) K = K + 3 ' ved 2 sættes kolonnerne helt sammen, ved 2 3 er der en tom imellem Next Worksheets(TilArk).PrintOut ' skriver til arket ud Worksheets(TilArk).Cells.ClearContents ' tømmer til arket End Sub
Havde ik set dette svar, så jeg gør stadigvæk tingene manuelt ;-) Så en god løsning ville være rart, men ... Jeg får følgende fejl meddelse: Can't execute code in break mode. det sker her: RKN = RKN & Worksheets(FraArk).HPageBreaks(I).Location & ";" ' hvilke rækker
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.