AW: notwendige Spaltenbreite ermitteln
13.06.2022 12:56:06
Daniel
Hi
so eine Funktion gibt es in VBA nicht.
du kannst nur das Autofit ausführen oder es sein lassen.
Wenn dir das Ergebnis nicht gefällt, gibts ja die Rückgängig-Funktion.
wenn du das als eigenständiges Marko programmieren willst (falls jemand das Rückgängig nicht kennt), dann musst du beachten, dass jede Makro-Aktion im Tabellenblatt den Rückgängig-Speicher löscht. Du müsstest dir also, um das ganze rückgängig zu machen, vor dem AutoFit die Spaltenbreiten merken und diese dann wieder einstellen.
Das macht dieses Makro, hier in der Variante, die auch die Auswahl von nichtzusammenhängenden Spalten erlaubt.
Du musst auch nicht die ganze Spalte selektieren, eine Zelle innerhalb jeder Spalte reicht:
Sub Spaltenbreite()
Dim Zelle As Range
Dim arr
Dim i As Long
With Intersect(Selection.EntireColumn, Rows(1))
ReDim arr(1 To .Cells.Count, 1 To 2)
For Each Zelle In .Cells
i = i + 1
arr(i, 1) = Zelle.Column
arr(i, 2) = Zelle.ColumnWidth
Next
End With
Selection.EntireColumn.AutoFit
Select Case MsgBox("Spaltenbreite übernehmen?", vbQuestion + vbOKCancel)
Case vbCancel
For i = 1 To UBound(arr, 1)
Columns(arr(i, 1)).ColumnWidth = arr(i, 2)
Next
Case Else
End Select
End Sub
Gruß Daniel