Avatar billede splokit Nybegynder
25. november 2005 - 15:51 Der er 41 kommentarer og
2 løsninger

VB Print ark ud fra værdi

Kan man lave en kode som ud fra en kolonne C2:C25 F.eks
Hvis der er værdi i C2:C4 Printer den ark 1 Hvis der er værdi i C6:C8 Printer den Ark 2 Osv.!?
Avatar billede sjap Praktikant
25. november 2005 - 17:09 #1
Skal der være værdier i alle tre celler (C2, C3, C4)?
Avatar billede sjap Praktikant
25. november 2005 - 17:19 #2
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

End Sub
Avatar billede splokit Nybegynder
25. november 2005 - 18:28 #3
Compile error:
Expected End Sud
Avatar billede splokit Nybegynder
25. november 2005 - 18:29 #4
det siger den... :S
Avatar billede sjap Praktikant
25. november 2005 - 18:31 #5
Det lyder om du mangler en "End sub"
Avatar billede sjap Praktikant
25. november 2005 - 18:31 #6
Hvis du har kopieret ovenstående skal du huske at få den allersidste linie med.
Avatar billede sjap Praktikant
25. november 2005 - 18:34 #7
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

End Sub
Avatar billede sjap Praktikant
25. november 2005 - 18:37 #8
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

End Sub
Avatar billede sjap Praktikant
25. november 2005 - 18:39 #9
Jeg kom lige til at glemme if-sætningen i det sidste forslag:
Avatar billede sjap Praktikant
25. november 2005 - 18:39 #10
Sub UdskrivArk2()

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

End Sub
Avatar billede splokit Nybegynder
25. november 2005 - 19:32 #11
virker... men printer alle 12 ark X3... :S

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...

C2:C3    =Ark1
C4:C5    =Ark2
C6:C7    =Ark3
C8:C9    =Ark4
C10:C11    =Ark5
C12:C13    =Ark6
C14:C15    =Ark7
C16:C17    =Ark8
C18:C19    =Ark9
C20:C21    =Ark10
C22:C23    =Ark11
C24:C25    =Ark12
Avatar billede sjap Praktikant
25. november 2005 - 19:45 #12
Hvis der er værdier i alle celler - skal den så også kun udskrive ark12?
Avatar billede sjap Praktikant
25. november 2005 - 19:48 #13
Glem det sidste spørgsmål, det var noget sludder.
Avatar billede sjap Praktikant
25. november 2005 - 19:49 #14
Men skal der være en værdi i både C2 og C3 - eller bare i én af dem for at udskrive ark1?
Avatar billede sjap Praktikant
25. november 2005 - 20:23 #15
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

End Sub
Avatar billede splokit Nybegynder
25. november 2005 - 20:45 #16
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
Avatar billede sjap Praktikant
25. november 2005 - 20:48 #17
Så prøver jeg med at kigge i cellerne "nedefra":

Sub UdskrivArk()

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

End Sub
Avatar billede sjap Praktikant
25. november 2005 - 20:58 #18
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

End Sub
Avatar billede splokit Nybegynder
25. november 2005 - 21:41 #19
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.
Avatar billede sjap Praktikant
25. november 2005 - 21:44 #20
Det er sådan set det, som den sidste makro gør.

Vi det altid være sådan felterne udfyldes parvist? dvs. hvis C2 udfyldes, så udfyldes C3 også. Hvis det er tilfældet kan makroen forenkles en smule.
Avatar billede sjap Praktikant
25. november 2005 - 21:45 #21
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

End Sub
Avatar billede splokit Nybegynder
25. november 2005 - 21:52 #22
der er 18 ark på mit sheet... og de ark er nogle at de siste og de kommer til at have navne som T1,T2 osv... kan man gøre at den gør det efter det!?
Avatar billede sjap Praktikant
25. november 2005 - 22:21 #23
Det forstod jeg vist ikke lige.

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

End Sub
Avatar billede splokit Nybegynder
25. november 2005 - 22:31 #24
Den laver Run-time error '1004':
Application-defined or odject-defined error
Avatar billede sjap Praktikant
25. november 2005 - 22:35 #25
Der var lige smuttet en placering af " i området:

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

End Sub
Avatar billede splokit Nybegynder
25. november 2005 - 22:41 #26
Den printer ikke... :S
Avatar billede sjap Praktikant
25. november 2005 - 22:42 #27
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

End Sub
Avatar billede sjap Praktikant
25. november 2005 - 22:43 #28
Hvis arkene er tomme, så finder Excel "selv" ud af, at der ikke skal skrives noget ud (det må være en lille miljøvenlig funktion).
Avatar billede splokit Nybegynder
25. november 2005 - 22:50 #29
heller ikke der... :S

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
Avatar billede sjap Praktikant
25. november 2005 - 22:54 #30
Så har jeg åbenbart misforstået din navngivning af arkene. Hedder de som du skriver her? Altså "Ark 1" "Ark 2" osv.
Avatar billede splokit Nybegynder
25. november 2005 - 22:55 #31
Avatar billede splokit Nybegynder
25. november 2005 - 22:57 #32
Hvad hvis man Vtæller. og hver værdi giver et ark som skal printer...
Avatar billede sjap Praktikant
25. november 2005 - 22:57 #33
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

End Sub
Avatar billede splokit Nybegynder
25. november 2005 - 23:00 #34
det er som om den søger men finder ikke de T Ark... :S
Avatar billede sjap Praktikant
25. november 2005 - 23:01 #35
Prøv evt. at maile regnearket, så skal jeg se på det

sjap9000 snabela hotmail punktum com
Avatar billede splokit Nybegynder
25. november 2005 - 23:16 #36
Avatar billede sjap Praktikant
25. november 2005 - 23:16 #37
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.
Avatar billede splokit Nybegynder
25. november 2005 - 23:17 #38
den gør det heller ikke hvis der er værdi..
Avatar billede sjap Praktikant
25. november 2005 - 23:21 #39
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

End Sub
Avatar billede splokit Nybegynder
25. november 2005 - 23:29 #40
Jep det virker... :D Mange gange tak... :D må du have dig en god weekend...
Avatar billede sjap Praktikant
25. november 2005 - 23:30 #41
I lige måde. Og tak for de mange gode point :0)
Avatar billede splokit Nybegynder
25. november 2005 - 23:30 #42
så kommer det sjove snart hvor man skal sætte 3 vb koder sammen....
Avatar billede sjap Praktikant
25. november 2005 - 23:32 #43
Den må vi hellere sove lidt på!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester