Avatar billede boro23 Forsker
17. februar 2026 - 08:38 Der er 3 kommentarer og
1 løsning

Udskrift af ark

Jeg har et ark, hvori der er formler ned til række 500, som henter fra en ekstern fil, det er forskelligt hvor mange rækker der bliver udfyldt fra gang til gang.
Findes der en løsning på at tilrette udskriftsområdet automatisk, så jeg undgår mange blanke udskrevne sider.
Avatar billede MaxZpaD Guru
17. februar 2026 - 10:46 #1
Automatik i denne sammenhæng kan kun opnås ved hjælp af en makro, så vidt jeg ved.

Der findes en hændelse (Event), som hedder Workbook_BeforePrint, der trigges, når noget udskrives. I denne event kan man så skrive en makro, der løber alle ark igennem og justerer udskriftsområderne i forhold til den sidste celle med synligt indhold.

Jeg har tilpasset en VBA-kode, som blev foreslået af Google Gemini:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim ws As Worksheet
    Dim sidsteRække As Long
    Dim sidsteKolonne As Long
    Dim omraade As String
    Dim r As Long
    Dim c As Long

    ' Loop igennem alle ark i den aktive projektmappe
    For Each ws In ThisWorkbook.Worksheets
       
        ' Find den sidste række og kolonne med indhold
        On Error Resume Next
        For r = ws.Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
            If WorksheetFunction.CountBlank(ws.Rows(r)) < ws.Columns.Count Then
                sidsteRække = r
                Exit For
            End If
        Next r
        For c = ws.Cells.SpecialCells(xlCellTypeLastCell).Column To 1 Step -1
            If WorksheetFunction.CountBlank(ws.Columns(c)) < ws.Rows.Count Then
                sidsteKolonne = c
                Exit For
            End If
        Next c
        On Error GoTo 0

        ' Hvis arket ikke er tomt, sæt udskriftsområdet
        If sidsteRække > 0 And sidsteKolonne > 0 Then
            omraade = ws.Range(ws.Cells(1, 1), ws.Cells(sidsteRække, sidsteKolonne)).Address
            ws.PageSetup.PrintArea = omraade
        Else
            ' Hvis arket er tomt, fjern eventuelt eksisterende udskriftsområde
            ws.PageSetup.PrintArea = ""
        End If
       
        ' Nulstil variabler til næste ark
        sidsteRække = 0
        sidsteKolonne = 0
    Next ws

    MsgBox "Udskriftsområdet er nu opdateret på alle ark!", vbInformation, "Færdig"
End Sub
Avatar billede boro23 Forsker
17. februar 2026 - 13:02 #2
Hej MaxZpaD
Din kode virker perfekt, men når jeg skrivebeskytter arkene, virker koden ikke.
Vil du indsætte en tillæg til koden der fjerner arkbeskyttelse, når koden er kørt arkbeskytte igen
Avatar billede MaxZpaD Guru
17. februar 2026 - 13:59 #3
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim ws As Worksheet
    Dim sidsteRække As Long
    Dim sidsteKolonne As Long
    Dim omraade As String
    Dim r As Long
    Dim c As Long
    ' Loop igennem alle ark i den aktive projektmappe
    For Each ws In ThisWorkbook.Worksheets
          With ws
            On Error Resume Next
                If .ProtectContents Then .Unprotect
                ' Find den sidste række og kolonne med indhold
                For r = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
                    If WorksheetFunction.CountBlank(.Rows(r)) < .Columns.Count Then
                        sidsteRække = r
                        Exit For
                    End If
                Next r
                For c = .Cells.SpecialCells(xlCellTypeLastCell).Column To 1 Step -1
                    If WorksheetFunction.CountBlank(.Columns(c)) < .Rows.Count Then
                        sidsteKolonne = c
                        Exit For
                    End If
                Next c
               
       
                ' Hvis arket ikke er tomt, sæt udskriftsområdet
                If sidsteRække > 0 And sidsteKolonne > 0 Then
                    omraade = .Range(.Cells(1, 1), .Cells(sidsteRække, sidsteKolonne)).Address
                    .PageSetup.PrintArea = omraade
                Else
                    ' Hvis arket er tomt, fjern eventuelt eksisterende udskriftsområde
                    .PageSetup.PrintArea = ""
                End If
             
                ' Nulstil variabler til næste ark
                sidsteRække = 0
                sidsteKolonne = 0
                If Not .ProtectContents Then .Protect
            On Error GoTo 0
        End With
    Next ws
    MsgBox "Udskriftsområdet er nu opdateret på alle ark!", vbInformation, "Færdig"
End Sub
Avatar billede boro23 Forsker
18. februar 2026 - 07:46 #4
Virker perfekt, 1000 tak for hjælpen :-)
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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