Änderung der Zeilenhöhe trotz Blattschutz
28.05.2006 02:38:08
Catie
ich verwende das unten stehende Makro in meiner Arbeitsmappe. Nun habe ich einige Zellen entsperrt, dafür dann das ganze Blatt gesperrt, d.h. man kann nur einige Zellen editieren. Dies behindert nun die Ausführung des Makros, es gibt eine Fehlermeldung. Das Makro soll dann prüfen ob das Blatt gesperrt ist. Wenn ja (was ja immer der Fall ist), soll es den Zellschutz vorübergehend freigeben und die Änderung der Zeilenhöhe erlauben. Wäre sehr schön, wenn mir jemand das anpassen könnte.
Und hier das Makro:
Sub autofitXLMergedCells()
'Passt Zeilenhöhe an den Text innerhalb von verbundenen Zellen im selektierten Bereich an
'(Die Autofit-Methode des Excel-Range-Objektes funktioniert für verbundene Zellen nicht)
On Error GoTo Err_autofitXLMergedCells
Dim lo_CurRange As Excel.Range
Dim lsg_SumCellWidths As Single
Dim lsg_OriginalWidthFirstCol As Single
Dim lsg_NewRowHeight As Single
Dim li_MergedCellsCount As Integer
With Selection
If .MergeCells Then
If .Rows.Count = 1 And .WrapText = True Then
lsg_OriginalWidthFirstCol = .Cells(, 1).ColumnWidth
'Einzelzellbreiten und Breiten der Gitterlinien summieren
For Each lo_CurRange In Selection
lsg_SumCellWidths = lo_CurRange.ColumnWidth + lsg_SumCellWidths
li_MergedCellsCount = li_MergedCellsCount + 1
Next
lsg_SumCellWidths = lsg_SumCellWidths + (li_MergedCellsCount - 1) * 0.71
'Verbindung der Zellen aufheben, erste (datentragende) Zelle auf Gesamtbreite ausdehnen und
'Höhe anpassen über Standardmethode
.MergeCells = False
.Cells(1).ColumnWidth = lsg_SumCellWidths
.EntireRow.AutoFit
'Resultierende Zeilenhöhe merken, erste Zelle zurücksetzen, Verbindung wiederherstellen, Höhe anpassen
lsg_NewRowHeight = .RowHeight + 15
.Cells(1).ColumnWidth = lsg_OriginalWidthFirstCol
.MergeCells = True
.RowHeight = lsg_NewRowHeight
End If
End If
End With
Exit Sub
'Nur für's Debuggen
Resume
Err_autofitXLMergedCells:
MsgBox Err.Number & ": " & Err.Description
End Sub
Gruss
Catie