Clever-Excel-Forum

Normale Version: Spalten auf einem anderen Tabellenblatt abhänging von Zellwert ausblenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich habe ein Tabellenblatt von dessen Werten in bestimmten Zellen ich Zeilen auf anderen Blättern per Checkboxklick ausblenden lasse.

Hierzu habe ich folgenden Code, der auch funktioniert:

Code:
Private Sub CheckBox1_Click()
    Dim schuelerzahl As Integer
    Dim i As Integer
    i = 0
    schuelerzahl = Cells(7, 3).Value
   
    If CheckBox1.Value = True Then
        i = schuelerzahl + 11
        Rows(i & ":" & 41).Hidden = True
       
        i = schuelerzahl + 2
        Sheets("LEB Text").Unprotect "Schiller"
        Tabelle15.Rows(i & ":" & 33).Hidden = True
        Sheets("LEB Text").Protect "Schiller"
       
        i = schuelerzahl * 4 + 6
        Sheets("KN 1").Unprotect "Schiller"
        Tabelle3.Rows(i & ":" & 133).Hidden = True
        Sheets("KN 1").Protect "Schiller"
       
        Sheets("KN 2").Unprotect "Schiller"
        Tabelle5.Rows(i & ":" & 133).Hidden = True
        Sheets("KN 2").Protect "Schiller"
       
        Sheets("KN 3").Unprotect "Schiller"
        Tabelle7.Rows(i & ":" & 133).Hidden = True
        Sheets("KN 3").Protect "Schiller"
       
        Sheets("KN 4").Unprotect "Schiller"
        Tabelle9.Rows(i & ":" & 133).Hidden = True
        Sheets("KN 4").Protect "Schiller"
       
        Sheets("KN 5").Unprotect "Schiller"
        Tabelle11.Rows(i & ":" & 133).Hidden = True
        Sheets("KN 5").Protect "Schiller"
       
        Sheets("Tests").Unprotect "Schiller"
        Tabelle13.Rows(i & ":" & 133).Hidden = True
        Sheets("Tests").Protect "Schiller"
             
    ElseIf CheckBox1.Value = False Then
        i = schuelerzahl + 11
        Rows(i & ":" & 41).Hidden = False
       
        i = schuelerzahl + 2
        Worksheets("LEB Text").Unprotect "Schiller"
        Tabelle15.Rows(i & ":" & 33).Hidden = False
        Sheets("LEB Text").Protect "Schiller"
       
        i = schuelerzahl * 4 + 6
        Sheets("KN 1").Unprotect "Schiller"
        Tabelle3.Rows(i & ":" & 133).Hidden = False
        Sheets("KN 1").Protect "Schiller"
       
        Sheets("KN 2").Unprotect "Schiller"
        Tabelle5.Rows(i & ":" & 133).Hidden = False
        Sheets("KN 2").Protect "Schiller"
       
        Sheets("KN 3").Unprotect "Schiller"
        Tabelle7.Rows(i & ":" & 133).Hidden = False
        Sheets("KN 3").Protect "Schiller"
       
        Sheets("KN 4").Unprotect "Schiller"
        Tabelle9.Rows(i & ":" & 133).Hidden = False
        Sheets("KN 4").Protect "Schiller"
       
        Sheets("KN 5").Unprotect "Schiller"
        Tabelle11.Rows(i & ":" & 133).Hidden = False
        Sheets("KN 5").Protect "Schiller"
       
        Sheets("Tests").Unprotect "Schiller"
        Tabelle13.Rows(i & ":" & 133).Hidden = False
        Sheets("Tests").Protect "Schiller"
             
    End If
End Sub

Nun möchte ich hinzu auf weiteren Tabellenblättern Spalten ausblenden lassen. Zu 1 Schülerzahl gehören immer 6 Spalten, angefangen von Spalte "G", also Schülerzahl "1" = G:L, Schülerzahl "2"= G:R, etc.
Ich dachte man könnte das auch so ausdrücken, was allerdings nicht funktioniert.

Code:
Private Sub CheckBox1_Click()
    Dim schuelerzahl As Integer
    Dim i As Integer
    i = 0
    schuelerzahl = Cells(7, 3).Value
   
    If CheckBox1.Value = True Then
      (...wie oben)
       
        i = schuelerzahl * 6 + 6
        Sheets("KR 1-Brief").Unprotect "Schiller"
        Tabelle20.Columns(i & ":" & "GP").Hidden = True
        Sheets("KR 1-Brief").Protect "Schiller"
       
    ElseIf CheckBox1.Value = False Then
      (...wie oben)
       
        i = schuelerzahl * 6 + 6
        Sheets("KR 1-Brief").Unprotect "Schiller"
        Tabelle20.Columns(i & ":" & "GP").Hidden = False
        Sheets("KR 1-Brief").Protect "Schiller"
       
    End If
End Sub

Das ganze muss bis Schülerzahl 31 laufen. Es geht immer um die gleichen Spalten auf 5 verschiedenen Tabellenblättern.
Man könnte es auch anders formulieren: Pro Schülerzahl sollen immer 6 Spalten mehr eingeblendet werden.
Ich danke für jede Hilfe!

Judith
Hallo Judith,

versuche es mal so

Code:
Private Sub CheckBox1_Click()
   Dim schuelerzahl As Integer
   Dim i As Long
   'unnötig
   'i = 0
   schuelerzahl = Cells(7, 3).Value
  
   If CheckBox1.Value = True Then
   '(...wie oben)
      
      i = schuelerzahl * 6 + 6
      Sheets("KR 1-Brief").Unprotect "Schiller"
      Tabelle20.Columns(i).reisze(199 - i).Hidden = True
      Sheets("KR 1-Brief").Protect "Schiller"
   'elseif hier unnötig
   Else
      
      i = schuelerzahl * 6 + 6
      Sheets("KR 1-Brief").Unprotect "Schiller"
      Tabelle20.Columns(i).Resize(, 199 - i).Hidden = False
      Sheets("KR 1-Brief").Protect "Schiller"
  
   End If
End Sub
Leider nein ?  Confused

Die Spalten werden nich ausgeblendet.
Hallo,

ein Komma hatte ich vergessen Undecided

PHP-Code:
Private Sub CheckBox1_Click()
   
Dim schuelerzahl As Integer
   Dim i 
As Long
   
'unnötig
   '
0
   schuelerzahl 
Cells(73).Value
   
   
If CheckBox1.Value True Then
   
'(...wie oben)
      
      i = schuelerzahl * 6 + 6
      Sheets("KR 1-Brief").Unprotect "Schiller"
      Tabelle20.Columns(i).reisze(, 199 - i).Hidden = True
      Sheets("KR 1-Brief").Protect "Schiller"
   '
elseif hier unnötig
   
Else
      
      
schuelerzahl 6
      Sheets
("KR 1-Brief").Unprotect "Schiller"
      
Tabelle20.Columns(i).Resize(, 199 i).Hidden False
      Sheets
("KR 1-Brief").Protect "Schiller"
   
   
End If
End Sub 

Tabbel20 und KR 1-Brief sind identisch? Auf welchem Tabellenblatt steht die Schülerzahl? Eventuell hier noch das Worksheet mit dazunehmen.
Danke!
Ja, Tabellenblatt20 und der Name sind identisch!

Problem gelöst!