Microsoft Excel

Herbers Excel/VBA-Archiv

Spaltenbreite nach Filtern anpassen | Herbers Excel-Forum


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.

ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Columns.AutoFit



Gruß Sepp



  

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


Beiträge aus den Excel-Beispielen zum Thema "Spaltenbreite nach Filtern anpassen "