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

Variabel bereik afdrukken met macro

Status
Niet open voor verdere reacties.

RoCompy87

Gebruiker
Lid geworden
13 nov 2006
Berichten
284
Hallo iedereen,

Ik heb een klein probleempje waar ik niet uitkom. Ik heb in Excel een 'database' in het bereik A1:J1500. Nu wil ik graag een macro schrijven die dit bereik afdrukt. Hoe krijg ik het voor elkaar om ervoor te zorgen dat de macro lege regels na de laatste regel met gegevens buiten het af te drukken bereik laat?

Voorbeeld:
Op regel 1 staan de kolomkoppen. De regels 2 tot en met 30 bevatten gegevens. Als nu op de knop wordt gedrukt die de 'printmacro' start, dan moet het bereik A1:J30 worden afgedrukt.

Alvast bedankt!
 
Hoi
ik een macrotje voor je geschreven, ik heb dit zelf ook al een keer zo gebruikt en dat werkte goed. Misschien moet je het afdruk bereik nog bepalen zodat het niet te breed wordt waardoor het niet mooi op 1 pagina wordt afgedrukt.
Code:
Sub Afdrukken()
Dim Teller As Long
    Range("A1").Select
    Do Until Selection = ""
        Teller = Teller + 1
        Selection.Offset(1, 0).Select
    Loop
    Range("A1").Resize(Teller, 10).Select
    Selection.PrintOut Copies:=Copies, Collate:=True
End Sub

Gr Paul
 
De methode van Paul werkt, maar is niet de meest efficiente. Indien op de eerste rij alle kolommen van data voorzien zijn, en indien in de eerste kolom alle rijen van data voorzien zijn, kan je werken op onderstaande manier.

Code:
Range(Range("A1").End(xlToRight), Range("A1").End(xlDown)).PrintPreview

Ik heb hier nu wel geen print commando, maar een printpreview aan de code toegevoegd. Maar dat kan gewijzigd worden naar printout ipv printpreview.

Op bovenstaande manier dien je niet met een lus doorheen je data te zoeken, wat de efficientie ten goede komt.

edit: moest rij 1 en kolom 1 niet volledig voorzien zijn van data, kan je onderstaande manier gebruiken.
Je moet nu wel aangeven in welke kolom de laatste rij data staat die moet meegenomen worden, dit doe je door de variabele ColMostData te wijzigen naar de gepaste waarde. Aangezien je een "database" gebruikt is dit de kolom met de primary key, want *normaal gezien* is deze bij een database nooit leeg.

Code:
Dim ColMostData As String
ColMostData = "A"
Range("A1:J1", Range(ColMostData & "1500").End(xlUp)).PrintPreview
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan