01. maj 2016 - 20:39Der er
5 kommentarer og 2 løsninger
VBA til udskrivning af variabelt område
Hej Eksperter
På ark "Start_alle" har jeg et område der skal udskrives. Størrelsen varierer, men udskriften starter altid i celle M5. Der er max 104 rækker og max 21 kolonner. Jeg har tællere der styrer antal rækker og antal kolonner. Hvordan skrives VBA der markerer området der skal udskrives???
Det nemmeste er nok at definere området som et Range og så udskrive det. Noget à la det følgende:
Option Explicit
Sub PrintUd() Dim rPrint As Range
'CurrentRegion virker, hvis cellerne er '"sammenhængende" og der ikke er tome 'rækker eller kolonner i området. 'Er der det, må du definere rPrint på en 'anden måde. Fx ved at bruge 'antal rækker og kolonner i offset til M5.
Eksemplet virker upåklageligt hos mig, og området behøver ikke blive markeret for at blive skrevet ud.
Hvis du skriver rPrint.Select i stedet for rPrint.PrintOut, markeres området.
I dit tilfælde defineres antal rækker og kolonner sikkert et andet sted, så du skal sørge for, at de værdier er tilgængelige for proceduren. Evt. kan du deklarere dem som Public variable eller variable på modulniveau (i toppen af modulet). Eller du kan lade dem følge med, når du kalder proceduren, som så skal se sådan ud:
Sub PrintUd(ByVal lRows As Long, ByVal lCols As Long) Dim rPrint As Range
Set rPrint = Range(Range("M5"), Range("M5").Offset(lRows - 1, lCols - 1))
rPrint.PrintOut
End Sub
Du kalder den så ved at skrive:
PrintUd lRows, lCols
hvor lRows og lCols indeholder værdierne for rækker og kolonner.
På makroområdet kan jeg skrive makroer, ved hjælp af optagefunktionen, og tilføje simple if eller next funktioner.
Jeg kan måske skrive makroen Sub PrintUd(ByValIRows As Long;ByVal ICols As Long)- men jeg er meget usikker på hvor der eventuelt er et mellemrum mellem tegnene.
Jeg aner ikke hvordan jeg skal kalde makroen. Skal det nu skrives en ny makro, eller hvad?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.