Avatar billede Mads32 Ekspert
01. maj 2016 - 20:39 Der 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???

Jeg anvender Exel 2010 på dansk, i windows 8
Avatar billede Sitestory Mester
02. maj 2016 - 15:33 #1
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.

Set rPrint = Range("M5").CurrentRegion

rPrint.PrintOut

End Sub
Avatar billede Sitestory Mester
02. maj 2016 - 15:43 #2
Her et eksempel på, hvordan du kan bruge antal rækker og kolonner, hvis CurrentRegion ikke virker:

Sub PrintUd()
Dim rPrint As Range
Dim lRows As Long
Dim lCols As Long

'Her skal antal rækker og kolonner defineres,
'hvis de ikke er defineret et andet sted.
'For eksemplets skyld gør vi det her.
lRows = 104
lCols = 21

Set rPrint = Range(Range("M5"), Range("M5").Offset(lRows - 1, lCols - 1))

rPrint.PrintOut

End Sub
Avatar billede Mads32 Ekspert
03. maj 2016 - 08:12 #3
Tak for dine indlæg.

Der kan være tomme celler i området.

Jeg tror jeg vil prøve med din kommentar #3. Den kan jeg forstå.

Jeg vender tilbage når jeg har prøvet det senere i dag.
Avatar billede Mads32 Ekspert
20. maj 2016 - 22:51 #4
Hej

Jeg har prøvet dit forslag #2 mange gange uden at få noget resultat.

Det ser ikke ud til at der bliver markeret et område til udskrift, og udskrift starter heller ikke.

Hvis du har fået det til at virke vil du så ikke downloade dit eksempel?
Avatar billede Sitestory Mester
21. maj 2016 - 12:53 #5
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.
Avatar billede Mads32 Ekspert
24. maj 2016 - 00:47 #6
Hej Sitestory.

Tak for din kommentar.

Jeg ved ikke hvordan jeg skal komme videre.

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?
Avatar billede Mads32 Ekspert
18. juli 2016 - 10:20 #7
Jeg lukker her
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester