Betrifft: Spaltenbreite nach Filtern anpassen
von: urs
Geschrieben am: 26.01.2010 14:57:36
Guten Abend
Über Filter werden die gesuchten Werte einer grossen Tabelle eingegrenzt.
Wie kann ich nun die Spaltenbreite automatisch der benötigten Breite der SICHTBAREN Zeilen anpassen.
Lässt sich diese benötigte Breite ermitteln? Makro gesucht!
Vielen Dank für Eure Hilfe
Gruss Urs
Betrifft: AW: Spaltenbreite nach Filtern anpassen
von: Josef Ehrensberger
Geschrieben am: 26.01.2010 15:51:16
Hallo Urs,
das geht z.BV. so.
Betrifft: AW: So einfach geht es also auch.
von: fcs
Geschrieben am: 26.01.2010 16:07:48
Hallo Sepp,
da hab ich mir aber einen Lindwurm von Prozedur abgebrochen und dann reicht ein Einzeiler.
Gruß
Franz
Betrifft: AW: Spaltenbreite nach Filtern anpassen
von: urs
Geschrieben am: 26.01.2010 16:18:05
Hallo Sepp,
das ist genau das was ich in dieser Frage suchte. Vielen Dank!
Gruss Urs
Betrifft: AW: Spaltenbreite nach Filtern anpassen
von: fcs
Geschrieben am: 26.01.2010 16:02:21
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
Betrifft: AW: Spaltenbreite nach Filtern anpassen
von: urs
Geschrieben am: 26.01.2010 16:23:49
Hallo Franz
Auch Dir danke ich für Deine Hilfsbereitschaft. Du hast also das Problem auch schon gehabt.
Aber Du hast Dir eine eigene Lösung zurechtgeschneidert. Bravo !!
Vielleicht auf ein nächstes Mal.
gruss urs