AW: Spaltenbreite nach Filtern anpassen
26.01.2010 16:02:21
fcs
Hallo Urs,
die erforderliche Breite kann man nur ungefähr abschätzen, sie hängt von der Schriftgröße, dem Font, der eingestellten Standardschriftart/-größe ab. Spalten, die mit Zeilenumbruch formatiert sind sollte man von der Anpassung ausklammern.
Gruß
Franz
Sub AutofilterSpaltenbreiten()
Dim wks As Worksheet, Zeile As Long, Spalte As Long, arrMax() As Long
Dim oAutofilter As autofilter
Const LaengeZeichen = 1.2 'Wert anpassen an Schriftgröße und Schriftart
Set wks = ActiveSheet
Set oAutofilter = wks.autofilter
With oAutofilter
ReDim arrMax(.Range.Column To .Range.Column + .Range.Columns.Count - 1)
'Max.Zeichenzahl in Spalten ermitteln
For Zeile = .Range.Row To .Range.Row + .Range.Rows.Count - 1
If wks.Rows(Zeile).Hidden = False Then
For Spalte = .Range.Column To .Range.Column + .Range.Columns.Count - 1
If Len(wks.Cells(Zeile, Spalte)) > arrMax(Spalte) Then
arrMax(Spalte) = Len(wks.Cells(Zeile, Spalte))
End If
Next
End If
Next
For Spalte = .Range.Column To .Range.Column + .Range.Columns.Count - 1
Select Case Spalte
Case 6, 8, 98 'Nummern der nicht anzupassenden Spalten
Case Else
If arrMax(Spalte) = 0 Then
wks.Columns(Spalte).ColumnWidth = 1 * LaengeZeichen
Else
wks.Columns(Spalte).ColumnWidth = arrMax(Spalte) * LaengeZeichen
End If
End Select
Next
End With
End Sub