Hallo Marcel,
ich habe es so verstanden, dass alle Spalten, die nach den 20 anzuzeigenden Spalten existieren auszublenden sind.
Ich hoffe dies löst das geschilderte Problem.
Option Explicit
Sub spaltenAusblenden()
Dim c As Integer, cols As Integer, i As Integer, lastCol As Integer, hiddenCols As Integer, colsToHide
'eingeblendete Spalten ermitteln
'1. Anzahl der benutzten Spalten ermitteln
lastCol = Sheets("Tabelle1").Cells(1, Columns.Count).End(xlToLeft).Column
'2. Anzahl ausgeblendeter Spalten ermitteln
hiddenCols = ausgeblendeteSpaltenZaehlen
'Anzahl anzuzeigender Spalten ermitteln:
'Anzuzeigen sind Spalte B + 20 nicht ausgeblendete Spalten
'ist keine Spalte ausgeblendet, müssen Spalten (1 & 2 sowie die nächsten 20 = 22 Spalten angezeigt werden. Ab Spalte 23 ausblenden)
i = lastCol - hiddenCols - 22
'
If i > 0 Then
colsToHide = 23 + hiddenCols
'Spalten ausblenden
With Sheets("Tabelle1")
.Range(.Cells(1, colsToHide), .Cells(1, lastCol)).Columns.Hidden = True
End With
End If
End Sub
Function ausgeblendeteSpaltenZaehlen()
Dim a As Integer, c As Integer, lc As Integer
'Letzte verwendete Spalte ermitteln
lc = Sheets("Tabelle1").Cells(1, Columns.Count).End(xlToLeft).Column
'Schleife über alle verwendeten Spalten. Sobald eine ausgeblendet ist, wird diese gezählt
For a = 1 To lc
If ActiveSheet.Columns(a).EntireColumn.Hidden = True Then c = c + 1
Next a
'Ausgabe der Anzahl der ausgeblendeten Spalten
ausgeblendeteSpaltenZaehlen = c
End Function
Viele Grüße
Kai
|