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

bepalen welke tabbladen afgedrukt moeten worden en welke niet

Status
Niet open voor verdere reacties.

davylenders123

Gebruiker
Lid geworden
20 jun 2010
Berichten
902
Even een vraagje voor de experten hier.


Heb een excel waar in tabblad bron in kolom B en C gegevensvalidatie zitten.
Deze 2 kolommen kunnen ze enkel maar wijzigen. En door deze wijzigingen zullen de tabbladen met de nummerplaten geupdate worden.
Het is de bedoeling dat er voor elke nummerplaat een apart tabblad komt die naar de bijhorende rij verwijst.(Heb nu in dit test bestand maar 6 tabbladen aangemaakt van de nummerplaten maar dit moeten er uiteindelijk meer worden)
Heb er een printknop in staan die al de tabbladen gaat afdrukken behalve tabblad bron en stamdata.

Maar is er een manier dat je met 1 druk op een knop enkel de tabbladen kan afdrukken waarvan er in het tabblad bron gegevens zijn ingevuld in kolom B of C.
Dus als achter de nummerplaat in kolom A niets staat ingevuld op dezelfde rij in kolom B of C dat dan dit bijhorende tabblad niet wordt afgedrukt.

Hopelijk heb ik het goed verwoord.
 

Bijlagen

edmoor

Bedankt voor je snelle reactie.:thumb:

Heb net geprobeerd en had enkel in cel b2 b3 en c2 en c3 gegevens staan maar drukt alle 6 de tabbladen af.
Heb ook geprobeerd om rij 4 extra in te vullen maar het blijft onveranderd drukt opnieuw de 6 tabbladen af.
 
Oeps!
Er zit inderdaad een foutje in.
Wijzig: If .Cell(I, 3) <> ""

in: If .Cells(I, 3) <> ""
 
Laatst bewerkt:
edmoor

Heb nu alle tabbladen toegevoegd in mijn bestand en heb je code toegevoegd maar nu werkt het afdrukken niet meer .
Als ik de code laat lopen wordt het blad Bron afgedrukt.


Heb al van alles geprobeerd maar geraak er niet uit :o
 

Bijlagen

Code:
Sub Afdrukken()
    ar = Sheets("Bron").Cells(2, 1).CurrentRegion
    For J = 2 To UBound(ar)
      If (ar(J, 3)) <> "" Then c00 = c00 & "|" & ar(J, 1)
    Next J
    If Len(c00) > 0 Then
      Sheets(Split(Mid(Replace(c00, "-", ""), 2), "|")).Select
      ActiveWindow.SelectedSheets.PrintPreview
    End If
End Sub
 
Gaat het over Sub Afdrukken() ? Die werkt niet vanwege .CurrentRegion.Rows.Count op beveiligd werkblad. Dit werkt volgens mij wel:
Code:
Sub Afdrukken()
    On Error Resume Next
    laatste_rij = Cells(Cells.Rows.Count, 1).End(xlUp).Row
    With Sheets("Bron")
        For I = 3 To laatste_rij               'startrij is 3
            If .Cells(I, 3) <> "" Then
                If Not sel Then
                    Sheets(Replace(.Cells(I, 1), "-", "")).Select True
                    sel = True
                Else
                    Sheets(Replace(.Cells(I, 1), "-", "")).Select False
                End If
            End If
        Next I
    End With
    On Error GoTo 0
    
    ActiveWorkbook.Save
    ActiveWindow.SelectedSheets.PrintPreview
    'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
        
    Sheets("Bron").Select
End Sub

Door On Error Resume Next werd de fout genegeerd. Probeer dat te vermijden.
 
Laatst bewerkt:
Zonder lus en controle op kolom B en C.
Code:
Sub hsv()
Sheets("bron").Cells(1).CurrentRegion.Columns(1).Offset(1).Name = "b"
   s0 = Join(Filter([transpose(if((offset(b,,1)<>"")*(offset(b,,2)<>""),b,"~"))], "~", 0), "|")
    If Len(s0) > 0 Then
      Sheets(Split(Replace(s0, "-", ""), "|")).Select
      ActiveWindow.SelectedSheets.PrintPreview
    End If
End Sub
 
En dan werkt het zo ook nog wel.
Code:
Sub hsv()
Sheets("bron").Cells(1).CurrentRegion.Columns(1).Offset(1).Name = "b"
   s0 = Join(Filter([transpose(if((offset(b,,1)<>"")*(offset(b,,2)<>""),b,"~"))], "~", 0), "|")
    If Len(s0) > 0 Then Sheets(Split(Replace(s0, "-", ""), "|")).PrintPreview
End Sub
 
Alle bedankt voor jullie snelle oplossingen :thumb::thumb:

Heb ze net even allemaal geprobeerd en bij de oplossingen van VenA en HSV krijg ik de melding dat je deze code niet kan uitvoeren omdat het blad beveiligd is en dat je eerst de beveiliging moet verwijderen.

De oplossing van daan108 werkt op het eerste zicht wel.

Ga dit morgen verder bekijken en testen en als het werkt zal ik het laten weten en de vraag op opgelost zetten.

Alvast allemaal bedankt voor jullie hulp weeral :thumb::thumb:
 
Dan haal je de beveiliging eraf en zet het er weer op.

Evt. wachtwoord plaatsten tussen de quotes.

Code:
Sub hsv()With Sheets("bron")
  .unprotect [SIZE=4][COLOR=#ff0000]""[/COLOR][/SIZE]
  .Cells(1).CurrentRegion.Columns(1).Offset(1).Name = "b"
    s0 = Join(Filter([transpose(if((offset(b,,1)<>"")*(offset(b,,2)<>""),b,"~"))], "~", 0), "|")
    If Len(s0) > 0 Then Sheets(Split(Replace(s0, "-", ""), "|")).PrintOut
  .protect [SIZE=4][COLOR=#ff0000]""[/COLOR][/SIZE]
 End With
End Sub
 
HVS

Je laatste code heb ik geprobeerd maar krijg foutmelding "Fout-2147352565 (8002000B) tijdens uitvoering. Het item met opgegeven naam is niet gevonden"

En in de code stop hij dan op
Code:
Sheets(Split(Replace(s0, "-", ""), "|")).PrintOut


Extra info
Heb net de andere voorbeelden van u even geprobeerd maar dan zonder dat er beveiliging op stond en deze lopen allemaal op zelfde regel vast.
 
Laatst bewerkt:
Ik zal vanavond het bestand plaatsen waarin alles werkt.
Als een blad niet aanwezig is krijg je inderdaad die foutmelding.
 
HSV

Deze werkt , maar wat heb je nu juist aan het bestand aangepast ?
De code is hetzelfde gebleven , zie geen extra tabblad toegevoegd ook niet verborgen .
Maar wat dan wel ?


Extra info toegevoegd

Helemaal gaat het nog niet goed , als je in bron een rij leeg laat omdat deze die dag niet gebruikt wordt en je neemt de volgende dan loopt hij vast op dezelfde regel in de code.
 
Laatst bewerkt:
Plaats het bestand eens met wat je uitspookt.
 
Waarschijnlijk staan de routes vast en wordt er in kolom A een kenteken aan gekoppeld. Als een route niet gereden wordt dan geen kenteken in kolom A? Wat iets anders is dan een rij leeg laten. Als je een rij leeg laat dan zal niet alles afgedrukt worden. Zoek eens op currentregion.

Met een paar aanpassingen.

Code:
Sub hsv()
With Sheets("bron")
  .Unprotect ""
  .Cells(1).Resize(.UsedRange.Rows.Count).Offset(1).Name = "b"
    s0 = Join(Filter([transpose(if((b<>"")*(offset(b,,1)<>"")*(offset(b,,2)<>""),b,"~"))], "~", 0), "|")
    If Len(s0) > 0 Then Sheets(Split(Replace(s0, "-", ""), "|")).PrintPreview
  .Protect ""
 End With
End Sub
 
Code:
.usedrange.Columns(1).Offset(1).Name = "b"
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan