Mit nachstehendem Code blende ich in einem Worksheet die Spalten A:E aus und gruppiere die Spalte F:M.
Das klappt solange, als im aktiven Worksheet nicht Spalten weiter rechts angezeigt werden.
Ist beispielsweise die Spalte "FA" & ff sichtbar, erscheinen die Spalten "FA:FG" eingefriert.
Alle Spalten vor FG sind dann nicht mehr sichtbar.
Damit das nicht passiert, habe ich
With ActiveSheet
Application.Goto .Cells(1, 14)
..
End With
eingefügt. Doch die Zelle wird zwar angewählt, jedoch nicht angezeigt.
Ich nehme an, dass sich das Problem mit der falschen Fixierung der Spalten nur Lösen lässt, wenn am Bildschirm die Zelle N vor Ablauf des Codes sichtbar ist (nach Ablauf des Codes sollen die Spalten A:E ausgeblendet und die Spalte "F:M" gruppiert).
Was muss anstelle von Application.Goto .Cells(1, 14) stehen, resp. momit muss diese Anweisung ergänzt werden?
Gruss, Peter
Sub FfixTabelle()
Dim StrGruppieren As String
With ActiveWindow
.FreezePanes = False
.SplitColumn = False
.SplitRow = False
End With
With ActiveSheet
Application.Goto .Cells(1, 14)
With .Columns("A:E")
.Columns.Hidden = True
StrGruppieren = "F:M"
' Alle Gruppierungen aufheben
If IsDetail(ActiveSheet.Name, StrGruppieren) = True Then
ActiveSheet.Cells.ClearOutline
.Columns(StrGruppieren).Columns.Group
''zur Syntax nachstehenden ExecuteExcel4Marcos
'': die 1 steht für eine Zeilengruppierung (2 dann für eine _
Spaltengruppierung) und
''die 3 steht für die Zeilennr. (oder Spaltennr.) wo die _
Gruppierung anfängt und
''False dann natürlich noch die Visible-Eigenschaft
ExecuteExcel4Macro "SHOW.DETAIL(2,6,False)"
End If
End With
With ActiveWindow
.SplitColumn = Range("spClass").Column - Range("spEffDate").Column + 1
.SplitRow = 1
.FreezePanes = True
.Zoom = 80
End With
End With
End Sub
Function IsDetail(strWks As String, varRowCol As String) As Boolean
If IsNumeric(VBA.Left(varRowCol, 1)) Then
IsDetail = Not Worksheets(strWks).Rows(varRowCol).Hidden
Else
IsDetail = Not Worksheets(strWks).Columns(varRowCol).Hidden
End If
End Function