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