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

ge-automatiseerd printen

Status
Niet open voor verdere reacties.

Pieter77

Gebruiker
Lid geworden
15 feb 2009
Berichten
15
Ik zou graag wat print acties willen automatiseren in een werkboek. Het gaat om de volgende, sterk vereenvoudigde, situatie:


Ik heb een werkboek met 5 sheets. In sheet 1(overzicht) staat de volgende tabel:

kolom A Kolom B
a w
b x
a y
b z

De 4 overige sheets hebben titels die overeenkomen met de inhoud van de tabel, kolom B (dus sheets met de titel w,x,y,z).

Nu wil ik graag in sheet 1 een knop waarmee ik alle sheets behorend bij a (opzoeken in kolom 1, sheet w en y) uitprint en een andere knop waarmee ik alle sheets behorend bij b (dus sheets x en z) uitprint.


Kan iemand mij hiermee op weg helpen?


Dank
Pieter
 
Je kunt 2 knoppen aanmaken op het werkblad en elk verwijzen naar 1 van onderstaande macro's.

Code:
Sub PrintenA()
Worksheets("w").PrintOut
Worksheets("y").PrintOut
End Sub

Code:
Sub PrintenB()
Worksheets("x").PrintOut
Worksheets("z").PrintOut
End Sub

Het kan ook de moeite lonen om 1 knop te maken en die laten kijken naar een bepaalde waarde in een cel om te bepalen of A dan wel B moet worden geprint.
Zeker als het om veel werkbladen zou gaan, kan het interessant zijn.

Met vriendelijke groet,


Roncancio
 
Selecteer de letter in de validatielijst en met een druk op de knop worden de geselcteerde bladen geprint.

Mvg

Rudi
 

Bijlagen

Roncancio,


De weergave van het probleem is sterk vereenvoudigd, het werkelijke werkboek bestaat uit meer dan 100 werkbladen, dus handmatig een printfunctie aanmaken is een monnikenwerk. Daarnaast verandert de relatie tussen de data in kolom A en B nogal eens, wat inhoudt dat je constant je print opdracht handmatig moet aanpassen.

Je geeft aan dat het mogelijk is om een button te maken die zoekt naar een bepaalde waarde om te bepalen wat er geprint moet worden. Dat is precies wat ik graag zou willen. In het vereenvoudigde voorbeeld wil ik dus twee buttons (A en B) waarbij de bijbehorende regels in kolom B worden gezocht en uitgeprint worden. Kun je mij daar bij helpen?


Dank,
Pieter
 
Wat doet mijn voorbeeld dan denk je ?

Mvg

Rudi
 
Voldoet de oplossing van WarmBakkertje niet aan je verwachting, want zo had ik het in gedachten?
In cel A1 staat bijvoorbeeld een A en zodra je op een knop klikt, worden de werkbladen die bij A horen, uitgeprint.

Als je het anders wilt, dan hoor ik het wel.

Met vriendelijke groet,


Roncancio
 
Rudi,


Idd, jouw voorstel kom erg in de buurt van wat ik graag wil en ben bezig om jouw voorstel te verwerken in mijn werkboek. Met jouw voorstel kom ik een heel eind, al zou ik graag een aantal dingen iets anders willen doen:
- er is een lijst gemaakt waarbij je de waarden zelf hebt ingegeven (a en b). Deze lijst wil ik graag uit de kolom laten halen en dan slechts eenmaal tonen (dus er zijn meerdere a's en b's, dan moet hij alleen a en b laten zien)
- Als ik de naam rudi op blad 3 en 4 verander in twee andere willekeurige namen en ik selecteer a, dan wordt twee maal de naam rudi geprint, en niet rudi en een van de willekeurige andere namen. Hier klopt toch nog iets niet helemaal.

Ik hoop dat je mij verder kan helpen.


Pieter
 
Alernatief met het criterium in cel D1

Code:
Sub tst()
  With [overzicht!A1].CurrentRegion
    .AutoFilter 1, [D1]
    For Each cl In .Columns(2).SpecialCells(12)
      c0 = c0 & "|" & cl.Value
    Next
  End With
  Sheets(Split(Mid(c0, 2), "|")).PrintOut
End Sub
 
Laatst bewerkt:
Zo doet hij het wel juist
Code:
Sub printen()
Application.ScreenUpdating = False
Dim c As Range, x As String
With Sheets("Blad1").Range("a2:a10")
    Set c = .Find([A1].Value, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
            Do
            x = c.Offset(0, 1).Value
            Worksheets(x).PrintOut
    Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
Application.ScreenUpdating = True
End Sub

Mvg

Rudi
 
Rudy,

Bedankt, dit is wat ik zocht!! Welliswaar niet met een knop, maar met een lijst. Eigenlijk wel zo handig. Toch wil ik nog een stapje verder. 2 vragen:

Zoals hierboven al beschreven ben ik benieuwd of het mogelijk is dat de zoeklijst niet zelf ingegeven wordt (bij jou a en b) maar dat de data uit deze lijst uit de kolom gehaald wordt en dan slechts eenmaal getoond wordt (dus er zijn meerdere a's en b's, dan moet hij eenmaal a en b laten zien)

Daarnaast wil ik een stap verder gaan met de printfunctie. Stel er zijn drie kolommen.

a x 1
b y 2
a x 3
a z 4
b y 5
a x 6

Het printen van de data behorend bij x (dus 1,3 en 6) is reeds gelukt. Nu zou ik graag in een geautomatiseerde printopdracht a of b willen selecteren (eerste kolom) waarna de werkbladen behorend bij de tweede kolom en de derde kolom worden afgedrukt. Voorbeeld: Ik selecteer in de eerste kolom a, dan moeten de werkbladen x,1,3,6 en z,4 worden afgedrukt. Als ik b selecteer, dan moeten de werkbladen y,2,5 worden afgedrukt.
Nu is me dit al voor een deel gelukt, alleen wordt bij a de sheet x telkens opnieuw geprint als een andere sheet uit de derde kolom wordt afgedrukt. Deze sheet (x dus) moet eenmaal worden afgedrukt, gevolgd door de sheets 1,3,6.

Ik hoop dat het een beetje te volgen is. Alvast bedankt voor het meedenken!!

gr.

Pieter
 
Het eenmaal laten zien van regels in de lijst is inmiddels geluk met behulp van een hulpkolom. Nu rest de vraag of iemand mij op weg kan helpen met het tweede deel van mijn vraag.

Alvast bedankt


gr.

Pieter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan