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

Loop met voorwaarden

Status
Niet open voor verdere reacties.

Rusty79

Gebruiker
Lid geworden
15 sep 2011
Berichten
10
Hallo allemaal,

Ik heb een probleem dat ik vereenvoudigd heb in een voorbeeld (zie bijlage).
De uploadfunctie op dit forum werkt blijkbaar niet (hebben jullie hier ook problemen mee?), dus ik heb hem even via yousendit geupload: https://rcpt.yousendit.com/1226783066/3e7a8503540f31bbde268047fa50fe57

Op het tabblad 'Data' staan een x-aantal artikelen.
De artikelnummers moeten 1 voor 1 gekopieerd worden naar cel B1 van het tabblad 'Print' en dan moet dat blad (die zelf de aantallen verticaal zoekt) ook steeds tussendoor geprint worden.
Lege regels moet de macro automatisch overslaan.

Het liefst heb ik ook nog dat artikelen waar geen productie van is niet geprint worden, maar dat is niet het belangrijkste.

Mocht er iets onduidelijk zijn dan hoor ik het graag.

Mijn macro probeersel is dit, maar het werkt niet:
Code:
Sub vulinfo()

    Do
    Active.Cell.Select
    Selection.Copy
    Sheets("Print").Select
    Range("B1").Select
    Selection.PasteSpecial Paste:=xlPasteValues
    Sheets("Data").Select
       ActiveCell.Offset(1, 0).Select
      Loop Until ActiveCell.Value = "EINDE"
    Einde = ActiveCell.Row
    Range("A2:A" & Einde - 1).Select

End Sub

Groeten,
Rusty79
(voorheen Rusty1979, maar mijn oude account krijg ik niet meer aan de praat)
 
Laatst bewerkt:
Zie bijlage.
Gevaarlijk hoor om veel bladen (tientallen of meer?) na elkaar af te drukken.
Als zich een printerstoring voordoet....
 
Laatst bewerkt:
printen

Hey fantastisch, dit is precies wat ik nodig had!
Dit is wel ff wat andere code dan ik gewend ben, dus ik ga proberen het van a-z te snappen en dan eventueel later (indien nodig) toe te passen op andere bestanden.

Dank je wel.

Bestaat er ook nog een mogelijkheid om Range("A65536") te vervangen in bijvoorbeeld een woord in een cel, bijvoorbeeld EINDE?

Dan kun je er eventueel ook nog gebruik maken van de ruimte eronder namelijk.
 
Bestaat er ook nog een mogelijkheid om Range("A65536") te vervangen in bijvoorbeeld een woord in een cel, bijvoorbeeld EINDE?
Ja, natuurlijk.
Plaats eerst in A9 Einde terug, zoals het oorspronkelijk stond in jouw bestand.
Wijzig dan de regel waarin Range("A65536") voorkomt als volgt:
Code:
Do Until .Cells(x, 1).Value = "Einde"
 
Ik gebruik momenteel deze macro:
Code:
 With Sheets("Productielijst")
    x = 1
    Do While x <= .Range("P65536").End(xlUp).Row
    'Do Until .Cells(x, 16).Value = "Einde"
    x = x + 1
    If .Cells(x, 16) = "" Then GoTo volgende
    Sheets("Printblad").Range("A31").Value = .Cells(x, 5)
    Sheets("Printblad").PrintOut
volgende:
    Loop
    End With
Deze macro kopieert netjes alle waardes uit kolom P naar het tabblad Printblad, en print die uit.
Het probleem is echter dat ik altijd aan het begin én aan het einde een leeg blad krijg...
Weet iemand hoe dat kan?
 
Haal de apostrof eens weg aan het begin van deze regel:
Code:
'Do Until .Cells(x, 16).Value = "Einde"
 
' weghalen

Code:
Do While x <= .Range("P65536").End(xlUp).Row
Do Until .Cells(x, 16).Value = "Einde"
Als ik beide regels actief zet, zegt hij dat er een WITH ontbreekt.

Als ik alleen de 2e regel actief zet, werkt het op zich wel, maar hij stopt steeds met een foutmelding en gaat dan op de volgende regel staan:
Code:
If .Cells(x, 19) = "" Then GoTo volgende
Blijkbaar weet hij dan ineens niet wat ie moet doen...
 
Als ik beide regels actief zet, zegt hij dat er een WITH ontbreekt.
Dat is logisch, want bij elke Do hoort een Loop (dat kun je eenvoudig in de helpfile nakijken!!)

Het zou verhelderend werken als je je bestand zou meesturen,
want dat ziet er anders uit in vergelijking met dat wat je bij je eerste bericht plaatste.
 
Laatst bewerkt:
Ik heb het probleem al getackled door x=1 te veranderen in x=7.

Een ander probleem is dat ik van elk blad niet persé 1 printje wil hebben, maar een variabel aantal.
Ik heb dus een kolom toegevoegd met het aantal pagina's dat ik wil printen.
Kan dit in de macro aangepast worden, zodat hij per regel kijkt hoeveel printjes ik wil?

De huidige code:
Code:
Sub Macro1()
Dim x As Integer
Application.ScreenUpdating = False
With Sheets("Data")
'Deze macro is geschreven door Zapatr
x = 1
Do While x <= .Range("A65536").End(xlUp).Row
x = x + 1
If .Cells(x, 1) = "" Then GoTo volgende
Sheets("Print").Range("B1").Value = .Cells(x, 1)
Sheets("Print").PrintOut
volgende:
Loop
End With
Application.ScreenUpdating = True
End Sub

Zie bijlage op:
http://www.jenafietsen.nl/Printbladen.xls
 
Laatst bewerkt:
Code:
Sheets("Print").PrintOut Copies:=.Cells(x, 4).Value
 
Ik heb het probleem al getackled door x=1 te veranderen in x=7.
Die wijziging zie ik niet in bovenstaande macro.
En leg dat dan eens uit. Want als je x=1 wijzigt in x = 7, dan wordt er slechts 1 blad afgedrukt, namelijk dat voor het laatste artikel.
Het woord 'Einde' is nu ook verdwenen, terwijl je daar in een bijkomend bericht om vroeg.
A.u.b. goed uitleggen wat je wil.
Een ander probleem is dat ik van elk blad niet persé 1 printje wil hebben, maar een variabel aantal. Ik heb dus een kolom toegevoegd met het aantal pagina's dat ik wil printen. Kan dit in de macro aangepast worden, zodat hij per regel kijkt hoeveel printjes ik wil?
Dat is HEEL eenvoudig.
Al geprobeerd om een macro die dat doet handmatig op te nemen en daar dan 1 teken in te wijzigen door naar de betreffende cel te verwijzen?
 
Die wijziging zie ik niet in bovenstaande macro.
En leg dat dan eens uit. Want als je x=1 wijzigt in x = 7, dan wordt er slechts 1 blad afgedrukt, namelijk dat voor het laatste artikel.
Klopt, de wijzigingen zie je hier niet in.
Ik leg jullie mijn probleem steeds voor met een heel simpel voorbeeld, het werkelijke bestand dat ik gebruik is veel groter en uitgebreider, maar dat kan ik niet zomaar even publiceren hier.
En in dat bestand beginnen de kopjes pas bij regel 7, vandaar dat ik X=7 moest gebruiken.

Dat is HEEL eenvoudig.
Al geprobeerd om een macro die dat doet handmatig op te nemen en daar dan 1 teken in te wijzigen door naar de betreffende cel te verwijzen?
Hoe kun je dan:
Code:
Sheets("Print").PrintOut Copies:=.Cells(x, 4).Value
handmatig opnemen?
 
Ik leg jullie mijn probleem steeds voor met een heel simpel voorbeeld, het werkelijke bestand dat ik gebruik is veel groter en uitgebreider, maar dat kan ik niet zomaar even publiceren hier. En in dat bestand beginnen de kopjes pas bij regel 7, vandaar dat ik X=7 moest gebruiken.
En dat moeten wij dan maar raden?
Je voorbeeld moet wel overeenkomen met de werkelijkheid, anders kun je het beter achterwege laten !

Hoe kun je dan:
Sheets("Print").PrintOut Copies:=.Cells(x, 4).Value
handmatig opnemen?
Als je met de macrorecorder een printopdracht voor 4 paina's opneemt, dan zie je bij de code staan na Printout: copies = 4
Welnu, in de macro die ik je gegeven had, stonden al verwijzingen naar de A-, B-, en C-kolom: .cells(x,1), .cells(x,2), .cells(x,3) . Als het aantal exemplaren dat je wil afdrukken in de D-kolom staat, dan ligt het toch voor de hand om copies:=4 te wijzigen in: copies:= .cells(x,4) ? Door zelf dingen te proberen leer je het meest.
 
En dat moeten wij dan maar raden?
Je voorbeeld moet wel overeenkomen met de werkelijkheid, anders kun je het beter achterwege laten !
Mijn diepste verontschuldigingen!

Als je met de macrorecorder een printopdracht voor 4 paina's opneemt, dan zie je bij de code staan na Printout: copies = 4
Welnu, in de macro die ik je gegeven had, stonden al verwijzingen naar de A-, B-, en C-kolom: .cells(x,1), .cells(x,2), .cells(x,3) . Als het aantal exemplaren dat je wil afdrukken in de D-kolom staat, dan ligt het toch voor de hand om copies:=4 te wijzigen in: copies:= .cells(x,4) ? Door zelf dingen te proberen leer je het meest.
Op deze manier leer ik idd dat ik .cells ergens voor kan gebruiken, dat wist ik nog niet.
Dingen die ik al weet pas ik ook altijd toe op nieuwe macro's, maar ik leer nog dagelijks!
Meestal probeer ik hetgeen ik niet weet eerst uitgebreid in andere topics op dit forum (of op internet in het algemeen) te zoeken. Pas dan post ik iets hier, dat doe ik echt niet om jullie bezig te houden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan