Styring af kolonnebredde ved hjælp af data i celler

Ide: I række 1 indtastes værdier i enkelte eller alle celler

Disse værdier fortæller, hvor bred man ønsker at den pågældende kolonne skal være, mål i Excels standardmål, nemlig n-bredder. Kolonner, som ikke har en målangivelse skjules.

Denne kode løser opgaven. Kolonner, der indeholder et tal i række 1 sættes til den angivne kolonnebredde. Kolonner, hvor række 1 er tom, sættes til 0, mens kolonner, der indeholder en tekst i række 1 bliver ignoreret - det vil
sige bevarer den bredde, de har. Til sidst skjules række 1. Det er derfor en god idé kun at bruge række 1 til at angive kolonnebredder.

Sub Kolonnebredde()
    On Error Resume Next
    Application.ScreenUpdating = False
    For Each cel In Range("A1:XFD1").Cells
        If cel.Value = "" Then
            cel.Columns.ColumnWidth = 0
        Else
            cel.Columns.ColumnWidth = cel.Value
        End If
    Next
    Range("a1").EntireRow.Hidden = True
    Application.ScreenUpdating = False
End Sub


Koden er lavet til Excel 2007 og kører ret længe fordi der er 16.384 kolonner, der skal undersøges én ad gangen. Ved man på forhånd, hvilke kolonner, der bliver brugt i regnearker, fx A til Z, kan man speede processen betydeligt op ved at angive det område, der skal undersøges, og så skjule alle kolonner til højre for dette på énj gang, fx

Sub Kolonnebredde()
    On Error Resume Next
    Application.ScreenUpdating = False
    For Each cel In Range("A1:Z1").Cells
        If cel.Value = "" Then
            cel.Columns.ColumnWidth = 0
        Else
            cel.Columns.ColumnWidth = cel.Value
        End If
    Next
    Range("A1").EntireRow.Hidden = True
    Range("AA1:XFD1").EntireColumn.Hidden = True
    Application.ScreenUpdating = False
End Sub


Ret de to ranges, så For Each cel In Range("A1:Z1").Cells slutter med den yderste kolonne, du har med i dit område og Range("AA1:XFD1").EntireColumn.Hidden = True begynder med den første kolonne, der aldrig bruges.

Når koden er kørt vil ovenstående regneark se således ud:


- Retur til makroer -
- Retur til Excel -