Nedenstående er et eksempel på hvordan det kan gøres:
Sub UdskrivArk()
With Worksheets("Ark1") For i = 2 To 25 If .Range("C" & i) > 0 Then Select Case i Case 2 To 4: Sheets("Ark 1").PrintOut Copies:=1 Case 6 To 8: Sheets("Ark 2").PrintOut Copies:=1 Case Else End Select End If End With
Der var da også et par fejl i koden - beklager at jeg ikke kontrollerede dette inder jeg skrev det her ;0(
Sub UdskrivArk()
For i = 2 To 25 If Worksheets("Ark1").Range("C" & i) > 0 Then Select Case i Case 2 To 4: Sheets("Ark 1").PrintOut Copies:=1 Case 6 To 8: Sheets("Ark 2").PrintOut Copies:=1 Case Else End Select End If Next i
Det kan i øvrigt laves på en anden måde, der er lidt enklere:
Sub UdskrivArk2()
For Each c In Worksheets("Ark1").Range("C2:C25") Select Case c.Row Case 2 To 4: Sheets("Ark 1").PrintOut Copies:=1 Case 6 To 8: Sheets("Ark 2").PrintOut Copies:=1 Case Else End Select Next c
For Each c In Worksheets("Ark1").Range("C2:C25") If c.Value > 0 Then Select Case c.Row Case 2 To 4: Sheets("Ark 1").PrintOut Copies:=1 Case 6 To 8: Sheets("Ark 2").PrintOut Copies:=1 Case Else End Select End If Next c
Det er hvis det er værdi i de celler skal den printe det ark så hvis der er værdi i C25 skal den kun printe ark 12, så det er ud fra hvilken celle der angiver hvilket ark det skal printes...
Hvis der blot skal stå en værdi i den ene celle er det nok bedre at bruge
Sub UdskrivArk()
For i = 2 To 24 Step 2 If Worksheets("Ark1").Range("C" & i) > 0 Or Worksheets("Ark1").Range("C" & i + 1) > 0 Then Select Case i Case 2: Sheets("Ark1").PrintOut Copies:=1 Case 4: Sheets("Ark2").PrintOut Copies:=1 Case 6: Sheets("Ark3").PrintOut Copies:=1 Case 8: Sheets("Ark4").PrintOut Copies:=1 Case 10: Sheets("Ark5").PrintOut Copies:=1 Case 12: Sheets("Ark6").PrintOut Copies:=1 Case 14: Sheets("Ark7").PrintOut Copies:=1 Case 16: Sheets("Ark8").PrintOut Copies:=1 Case 18: Sheets("Ark9").PrintOut Copies:=1 Case 20: Sheets("Ark10").PrintOut Copies:=1 Case 22: Sheets("Ark11").PrintOut Copies:=1 Case 24: Sheets("Ark12").PrintOut Copies:=1 Case Else End Select End If Next i
Næsten. hvis det er værdi i 24 skal den kun printe ark 12 men der er værdi i alle du andrt men det skal den ikke se på. den skal tælle! Hvis der er = 2 værdier print kun ark2 og hvis det er 3 værdier Print ark 3 det er lidt svært at forklare sorry.. :S
Hvis Case 2: = værdi skal den kun printe Sheets("Ark1").PrintOut Copies:=1 Hvis Case 4: = værdi skal den kun printe Sheets("Ark2").PrintOut Copies:=1 Hvis Case 6: = værdi skal den kun printe Sheets("Ark3").PrintOut Copies:=1 Hvis Case 8: = værdi skal den kun printe Sheets("Ark4").PrintOut Copies:=1 Hvis Case 10: = værdi skal den kun printe Sheets("Ark5").PrintOut Copies:=1 Hvis Case 12: = værdi skal den kun printe Sheets("Ark6").PrintOut Copies:=1 Hvis Case 14: = værdi skal den kun printe Sheets("Ark7").PrintOut Copies:=1 Hvis Case 16: = værdi skal den kun printe Sheets("Ark8").PrintOut Copies:=1 Hvis Case 18: = værdi skal den kun printe Sheets("Ark9").PrintOut Copies:=1 Hvis Case 20: = værdi skal den kun printe Sheets("Ark10").PrintOut Copies:=1 Hvis Case 22: = værdi skal den kun printe Sheets("Ark11").PrintOut Copies:=1 Hvis Case 24: = værdi skal den kun printe Sheets("Ark12").PrintOut Copies:=1
For i = 24 To 2 Step 2 If Worksheets("Ark1").Range("C" & i) > 0 Or Worksheets("Ark1").Range("C" & i + 1) > 0 Then Select Case i Case 2: Sheets("Ark1").PrintOut Copies:=1 Case 4: Sheets("Ark2").PrintOut Copies:=1 Case 6: Sheets("Ark3").PrintOut Copies:=1 Case 8: Sheets("Ark4").PrintOut Copies:=1 Case 10: Sheets("Ark5").PrintOut Copies:=1 Case 12: Sheets("Ark6").PrintOut Copies:=1 Case 14: Sheets("Ark7").PrintOut Copies:=1 Case 16: Sheets("Ark8").PrintOut Copies:=1 Case 18: Sheets("Ark9").PrintOut Copies:=1 Case 20: Sheets("Ark10").PrintOut Copies:=1 Case 22: Sheets("Ark11").PrintOut Copies:=1 Case 24: Sheets("Ark12").PrintOut Copies:=1 Case Else End Select Exit Sub End If Next i
Hmm, måske har jeg misforstået det, men hvis der står noget i cellerne så kan du måske bruge den her helt korte version:
Sub UdskrivArkx()
Antal = Application.WorksheetFunction.Count(Worksheets("Ark1").Range("C1:C25)")) If Antal > 0 Then Sheets("Ark" & Int((Antal + 1) / 2)).PrintOut Copies:=1 End If
Det mit ark gør er Ark T,1,2,3,4,5,6,7,8,9,10,11,12 på T;C2:O25 er der data
Ark 1 har værdier fra T;C2:O3 Ark 2 har værdier fra T;C2:O5 Ark 3 har værdier fra T;C2:O7 Ark 4 har værdier fra T;C2:O9 Ark 5 har værdier fra T;C2:O11 Ark 6 har værdier fra T;C2:O13 Ark 7 har værdier fra T;C2:O15 Ark 8 har værdier fra T;C2:O17 Ark 9 har værdier fra T;C2:O19 Ark 10 har værdier fra T;C2:O21 Ark 11 har værdier fra T;C2:O23 Ark 12 har værdier fra T;C2:O25
Kan man lave det om så den tæller Fra C2:C25 så hvis Værdien = 2 Printer den Ark"1" og hvis værdien er =4 Printer den kun Ark"2" osv.
Det skulle selvfølgelig lige rettes til dit "T" ark. Sub UdskrivArkx()
Antal = Application.WorksheetFunction.Count(Worksheets("T").Range("C1:C25)")) If Antal > 0 Then Sheets("Ark" & Int((Antal + 1) / 2)).PrintOut Copies:=1 End If
Skal det forstås sådan at det ark, der skal udskrives IKKE hedder ark1, ark2 osv. men T1, T2 etc.? Hvis det er det, så skulle du kunne bruge denne her:
Det skulle selvfølgelig lige rettes til dit "T" ark. Sub UdskrivArkx()
Antal = Application.WorksheetFunction.Count(Worksheets("T").Range("C1:C25)")) If Antal > 0 Then Sheets("T" & Int((Antal + 1) / 2)).PrintOut Copies:=1 End If
Antal = Application.WorksheetFunction.Count(Worksheets("Ark1").Range("C1:C25")) If Antal > 0 Then Sheets("Ark" & Int((Antal + 1) / 2)).PrintOut Copies:=1 End If
Sikke noget kludder. Jeg har altså ikke en af mine helt gode dage. Nu sendte jeg igen den forkerte til dig. Her er versionen med T navne:
Sub UdskrivArkx()
Antal = Application.WorksheetFunction.Count(Worksheets("T").Range("C1:C25")) If Antal > 0 Then Sheets("T" & Int((Antal + 1) / 2)).PrintOut Copies:=1 End If
De Ark henter data fra ark T Ark 1 har værdier fra T;C2:O3 Ark 2 har værdier fra T;C2:O5 Ark 3 har værdier fra T;C2:O7 Ark 4 har værdier fra T;C2:O9 Ark 5 har værdier fra T;C2:O11 Ark 6 har værdier fra T;C2:O13 Ark 7 har værdier fra T;C2:O15 Ark 8 har værdier fra T;C2:O17 Ark 9 har værdier fra T;C2:O19 Ark 10 har værdier fra T;C2:O21 Ark 11 har værdier fra T;C2:O23 Ark 12 har værdier fra T;C2:O25 og der er tekst og rammer... et laout som sådan.. :S
Så vidt jeg kan se, så manglede jeg et mellemrum mellem T og tallet:
Sub UdskrivArkx()
Antal = Application.WorksheetFunction.Count(Worksheets("T").Range("C1:C25")) If Antal > 0 Then Sheets("T " & Int((Antal + 1) / 2)).PrintOut Copies:=1 End If
Ved nærmere eftersyn tror jeg godt jeg kan se problemet. Makroen skal kun køre, hvis der står en værdi i kolonne C, men der står jo ingen værdier i kolonne C - der står tekster.
Hvis det skal være teksterne, der skal tælles, så skal funktionen lige ændres til
Sub UdskrivArkx()
Antal = Application.WorksheetFunction.CountA(Worksheets("T").Range("C1:C25")) If Antal > 0 Then Sheets("T " & Int((Antal + 1) / 2)).PrintOut Copies:=1 End If
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.