• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Printen van sheets (afhankelijk van versie nr.)

Status
Niet open voor verdere reacties.

loukskywalker

Gebruiker
Lid geworden
6 feb 2014
Berichten
124
Hallo,

Ik heb inmiddels mijn excel sheet (met behulp van een aantal geweldige leden op dit forum) nog verder geoptimaliseerd!
Nu het bestand diverse sheets heeft gekregen kwam ik met het idee of het mogelijk is een soort plot/print job te maken. (dit kan b.v. in Autocad)

HelpmijNL.xlsm (mijnbestand.nl)
Of gewoon zo: http://www.mijnbestand.nl/Bestand-LND7DOFNKA8G.xlsm

Je vult de datum + versie/revisienummmer in op de volgkaart. Vervolgens word de datum ingevuld in desbetreffende sheets.
Ik zou dus graag willen zien dat ik per versie/revisienummmer de desbetreffende sheets zou kunnen printen.
Dus alle nr 1's printen. of Alle nr's 2 printen etc.


Ik heb niet heel veel ervaring met VBA (enkel in dit sheet toegepast, met hulp van forumleden:) )

Ik zou graag op de volgkaart "tegels om op te klikken" zien. Met b.v. print revisie's 1, 2, 3 etc.

Wie o wie kan mij helpen?
Alvast, hartelijk dank!
 
Laatst bewerkt:
Zoiets?
http://www.mijnbestand.nl/Bestand-FDIZZZWB47SJ.xlsm

De volgende code achter een ActiveX knop:
Code:
Private Sub CommandButton1_Click()
    nr = Application.InputBox("Welke revisienummer wilt u printen?", "Revisienummer")
    If Not IsNumeric(nr) Then
        MsgBox "U heeft geen waarde ingevuld, probeer het opnieuw.", vbInformation, "Geen waarde"
        Exit Sub
    ElseIf nr <> 0 Then
        With Sheets("Volgkaart")
            For Each c In .Range("Z11:AT" & .Range("A" & Rows.Count).End(xlUp).Row)
                If CInt(c) = nr Then blad = blad & "|" & .Cells(10, c.Column).Value
            Next
        End With
        Sheets(Split(Mid(blad, 2), "|")).PrintOut
    End If
End Sub
 
Laatst bewerkt:
Precies zoals ik het wilde hebben!
Kan je me de uitleg geven / VBA codes. en ze ook hier posten? Dan kunnen ander leden er wellicht ook wat mee!

in de VBA gewoon de content kopieëren naar daar waar ik het hebben wil!? Maar hoe maak ik ook alweer die "druktegel" en hoe link ik de VBA code?
 
In mijn voorbeeld gebruik ik een ActiveX knop. Deze kan je toevoegen via de 'ontwikkelaars'-tab > invoegen > activex besturingselement > de knop te kiezen.
Wanneer de 'ontwerpmodus' aan staat (in de ontwikkelaars-tab) kan je dubbelklikken op deze knop en de VBA-editor wordt vanzelf geopend. Hier plaats je de code die hieronder staat.

Een poging tot uitleg :)
Code:
Private Sub CommandButton1_Click()
    'via een inputbox het revisienummer bepalen
    nr = Application.InputBox("Welke revisienummer wilt u printen?", "Revisienummer")
    
    'als de ingevoerde waarde geen nummer is dan een melding
    If Not IsNumeric(nr) Then
        MsgBox "U heeft geen waarde ingevuld, probeer het opnieuw.", vbInformation, "Geen waarde"
        Exit Sub
    
    'als de ingevoerde waarde groter is dan 0
    ElseIf nr > 0 Then
        With Sheets("Volgkaart")
        
            'voor elke waarde in het dynamisch bereik Z11 t/m AT + laatste regel
            For Each c In .Range("Z11:AT" & .Range("A" & Rows.Count).End(xlUp).Row)
                
                'als de waarde van de cel gelijk is aan het ingevoerde revisienummer
                'verzamel de waarde die in regel 10 staat in een verzameling genaamd blad
                If CInt(c) = nr Then blad = blad & "|" & .Cells(10, c.Column).Value
            Next
        End With
        
        'splits de waardes in verzameling blad uit en print de tabbladen uit
        Sheets(Split(Mid(blad, 2), "|")).PrintOut
    End If
End Sub
 
Duidelijk!

Ik ben geholpen!

Was i.d.d. vergeten de "ontwerpmodus" weer uit te zetten. Daarom werkte het niet!

Hartelijk dank :):D
 
hij print nu direct. Kan ik ook eerst naar instellingen gaan, om b.v. aantallen in te geven?
Het zit namelijk zo, alle sheets dienen 2x te worden geprint. Behalve sheet: "slijpen" deze dient indien actief 9x geprint te worden!
 
Probeer dit eens
Code:
Private Sub CommandButton1_Click()
    'via een inputbox het revisienummer bepalen
    nr = Application.InputBox("Welke revisienummer wilt u printen?", "Revisienummer")
    
    'als de ingevoerde waarde geen nummer is dan een melding
    If Not IsNumeric(nr) Then
        MsgBox "U heeft geen waarde ingevuld, probeer het opnieuw.", vbInformation, "Geen waarde"
        Exit Sub
    
    'als de ingevoerde waarde groter is dan 0
    ElseIf nr > 0 Then
        With Sheets("Volgkaart")
        
            'voor elke waarde in het dynamisch bereik Z11 t/m AT + laatste regel
            For Each c In .Range("Z11:AT" & .Range("A" & Rows.Count).End(xlUp).Row)
                
                'als de waarde van de cel gelijk is aan het ingevoerde revisienummer
                'verzamel de waarde die in regel 10 staat in een verzameling genaamd blad
                If CInt(c) = nr Then
                    If .Cells(10, c.Column).Value = "Slijpen" Then sl = "Slijpen"
                    If .Cells(10, c.Column).Value <> "Slijpen" Then blad = blad & "|" & .Cells(10, c.Column).Value
                End If
            Next
        End With
        
        'splits de waardes in verzameling blad uit en print de tabbladen uit
        Sheets(Split(Mid(blad, 2), "|")).PrintOut , , 2
        If sl = "" Then Exit Sub Else Sheets(sl).PrintOut , , 9
    End If
End Sub
 
Hallo,

Spaarie, ik heb je code gebruikt. Enkelprint hij dubbelzijdig
Heb alle print instellingen per pagina al langsgelopen, maar ze staan allemaal op enkelzijdig printen... dit is de VBA:

Private Sub CommandButton1_Click()
'via een inputbox het revisienummer bepalen
nr = Application.InputBox("Welke revisienummer wilt u printen?", "Revisienummer")

'als de ingevoerde waarde geen nummer is dan een melding
If Not IsNumeric(nr) Then
MsgBox "U heeft geen waarde ingevuld, probeer het opnieuw.", vbInformation, "Geen waarde"
Exit Sub

'als de ingevoerde waarde groter is dan 0
ElseIf nr > 0 Then
With Sheets("Volgkaart")

'voor elke waarde in het dynamisch bereik Z11 t/m AT + laatste regel
For Each c In .Range("Z11:AT" & .Range("A" & Rows.Count).End(xlUp).Row)

'als de waarde van de cel gelijk is aan het ingevoerde revisienummer
'verzamel de waarde die in regel 10 staat in een verzameling genaamd blad
If CInt(c) = nr Then
If .Cells(10, c.Column).Value = "Slijpen" Then sl = "Slijpen"
If .Cells(10, c.Column).Value <> "Slijpen" Then blad = blad & "|" & .Cells(10, c.Column).Value
End If
Next
End With

'splits de waardes in verzameling blad uit en print de tabbladen uit
Sheets(Split(Mid(blad, 2), "|")).PrintOut , , 2
If sl = "" Then Exit Sub Else Sheets(sl).PrintOut , , 9
End If
End Sub




Probeer dit eens
Code:
Private Sub CommandButton1_Click()
    'via een inputbox het revisienummer bepalen
    nr = Application.InputBox("Welke revisienummer wilt u printen?", "Revisienummer")
    
    'als de ingevoerde waarde geen nummer is dan een melding
    If Not IsNumeric(nr) Then
        MsgBox "U heeft geen waarde ingevuld, probeer het opnieuw.", vbInformation, "Geen waarde"
        Exit Sub
    
    'als de ingevoerde waarde groter is dan 0
    ElseIf nr > 0 Then
        With Sheets("Volgkaart")
        
            'voor elke waarde in het dynamisch bereik Z11 t/m AT + laatste regel
            For Each c In .Range("Z11:AT" & .Range("A" & Rows.Count).End(xlUp).Row)
                
                'als de waarde van de cel gelijk is aan het ingevoerde revisienummer
                'verzamel de waarde die in regel 10 staat in een verzameling genaamd blad
                If CInt(c) = nr Then
                    If .Cells(10, c.Column).Value = "Slijpen" Then sl = "Slijpen"
                    If .Cells(10, c.Column).Value <> "Slijpen" Then blad = blad & "|" & .Cells(10, c.Column).Value
                End If
            Next
        End With
        
        'splits de waardes in verzameling blad uit en print de tabbladen uit
        Sheets(Split(Mid(blad, 2), "|")).PrintOut , , 2
        If sl = "" Then Exit Sub Else Sheets(sl).PrintOut , , 9
    End If
End Sub
 
De code zorgt ervoor dat er wordt geprint op de standaard printer.
Kijk eens onder 'Start' > 'Apparaten en printers' en vervolgens in de eigenschappen van je standaardprinter of daar een instelling staat van dubbelzijdig printen.
 
Hmm, raar. heb de printer instellingen nagekeken. En deze staat op enkelzijdig, dit is wel een gedeelde netwerkprinter.
Is er geen optie om na het drukken van de printknop, eerst de setupbox te krijgen van de printer (zoals je dat standaard hebt als je op print klikt?)..?
 
Ja hoor dat kan wel..
Code:
...
'splits de waardes in verzameling blad uit en print de tabbladen uit
[COLOR="#FF0000"]Application.Dialogs(xlDialogPrinterSetup).Show[/COLOR]
Sheets(Split(Mid(blad, 2), "|")).PrintOut , , 2
If sl = "" Then Exit Sub Else Sheets(sl).PrintOut , , 9
...
 
Werkt perfect,

Echter ligt het dubbelzijdig printen aan een instelling op mijn PC, wat zowel ikzelf als ICT niet opgelost krijg.

Nogmaals mijn dank!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan