Clever-Excel-Forum

Normale Version: Schleife für automatisches Spalten ausblenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Code:
Dim ValAY As Boolean
Dim ValBUD As Boolean
Dim ValPY As Boolean
Dim DVAbs As Boolean
Dim DVpercent As Boolean
Dim DVAbs2 As Boolean
Dim DVpercent2 As Boolean
Dim CosAY As Boolean
Dim CosBUD As Boolean
Dim CosPY As Boolean
Dim DeltaCospp As Boolean
Dim DeltaCospp2 As Boolean

Private Sub CBValAY_Click()
ValAY = FRM_Countries.CBValAY
'AY
If ValAY = False Then
   Columns("aa").Hidden = True
   Columns("av").Hidden = True
   Columns("BQ").Hidden = True
   Columns("CL").Hidden = True
   Columns("DG").Hidden = True
   Columns("EB").Hidden = True
   Columns("EW").Hidden = True
   Columns("FR").Hidden = True
   Columns("GM").Hidden = True
   Columns("HH").Hidden = True
   Columns("IC").Hidden = True
   Columns("IX").Hidden = True
   Columns("JS").Hidden = True
   Columns("KN").Hidden = True
   Columns("LI").Hidden = True
   Columns("MD").Hidden = True
   Columns("MY").Hidden = True  
   Columns("NT").Hidden = True
   Columns("OO").Hidden = True
   Columns("PJ").Hidden = True
   Columns("QE").Hidden = True
   Columns("QZ").Hidden = True
   Columns("RU").Hidden = True
   Columns("SP").Hidden = True
   Columns("TK").Hidden = True
   Columns("UF").Hidden = True
   Columns("VA").Hidden = True

End If

If ValAY = True Then

'AY
   Columns("aa").Hidden = False
   Columns("av").Hidden = False
   Columns("BQ").Hidden = False
   Columns("CL").Hidden = False
   Columns("DG").Hidden = False
   Columns("EB").Hidden = False
   Columns("EW").Hidden = False
   Columns("FR").Hidden = False
   Columns("GM").Hidden = False
   Columns("HH").Hidden = False
   Columns("IC").Hidden = False
   Columns("IX").Hidden = False
   Columns("JS").Hidden = False
   Columns("KN").Hidden = False
   Columns("LI").Hidden = False
   Columns("MD").Hidden = False
   Columns("MY").Hidden = False
   Columns("NT").Hidden = False
   Columns("OO").Hidden = False
   Columns("PJ").Hidden = False
   Columns("QE").Hidden = False
   Columns("QZ").Hidden = False
   Columns("RU").Hidden = False
   Columns("SP").Hidden = False
   Columns("TK").Hidden = False
   Columns("UF").Hidden = False
   Columns("VA").Hidden = False


End If


End Sub

Private Sub CBValBud_Click()

ValBUD = FRM_Countries.CBValBud

If ValBUD = False Then

   'BUD
   Columns("ab").Hidden = True
   Columns("aw").Hidden = True
   Columns("Br").Hidden = True
   Columns("cm").Hidden = True
   Columns("Dh").Hidden = True
   Columns("Ec").Hidden = True
   Columns("Ex").Hidden = True
   Columns("Fs").Hidden = True
   Columns("Gn").Hidden = True
   Columns("Hi").Hidden = True
   Columns("Id").Hidden = True
   Columns("Iy").Hidden = True
   Columns("Jt").Hidden = True
   Columns("Ko").Hidden = True
   Columns("Lj").Hidden = True
   Columns("Me").Hidden = True
   Columns("Mz").Hidden = True
   Columns("Nu").Hidden = True
   Columns("Op").Hidden = True
   Columns("Pk").Hidden = True
   Columns("Qf").Hidden = True
   Columns("ra").Hidden = True
   Columns("Rv").Hidden = True
   Columns("Sq").Hidden = True
   Columns("Tl").Hidden = True
   Columns("Ug").Hidden = True
   Columns("Vb").Hidden = True

End If

If ValBUD = True Then

   'BUD
   Columns("ab").Hidden = False
   Columns("aw").Hidden = False
   Columns("Br").Hidden = False
   Columns("cm").Hidden = False
   Columns("Dh").Hidden = False
   Columns("Ec").Hidden = False
   Columns("Ex").Hidden = False
   Columns("Fs").Hidden = False
   Columns("Gn").Hidden = False
   Columns("Hi").Hidden = False
   Columns("Id").Hidden = False
   Columns("Iy").Hidden = False
   Columns("Jt").Hidden = False
   Columns("Ko").Hidden = False
   Columns("Lj").Hidden = False
   Columns("Me").Hidden = False
   Columns("Mz").Hidden = False
   Columns("Nu").Hidden = False
   Columns("Op").Hidden = False
   Columns("Pk").Hidden = False
   Columns("Qf").Hidden = False
   Columns("ra").Hidden = False
   Columns("Rv").Hidden = False
   Columns("Sq").Hidden = False
   Columns("Tl").Hidden = False
   Columns("Ug").Hidden = False
   Columns("Vb").Hidden = False


End If

End Sub

Schönen Abend zusammen,

ich habe gerade ziemlich umständlich ein Formular zusammen gebastelt, mit dem ich bestimmte Spalten ausblende (siehe oben)
Das Formular blendet die entsprechenden Werte aus, wenn die Checkbox den Wert "falsch" enthält.
Der oben abgebildete Code bildet nur einen kleinen Teil ab, es folgen noch zig weitere Spalten.
Allerdings sind diese immer gleich aufgebaut. Sprich zwischen den Columns ist immer ein Abstand von 20 Spalten.

Ist es möglich hierfür eine Schleife zu bauen? Damit kenne ich mich leider noch nicht aus.


Viele Grüße und besten Dank

Thorben
Hallo Thorben,

du kannst anstatt der Buchstaben auch die Spaltennummer eingeben und in eine For-Schleife einbauen.
Ja, eine Möglichkeit wäre:
Code:
Private Sub CBValAY_Click()
   For i = 27 To 573 Step 21
       Columns(i).Hidden = Not FRM_Countries.CBValAY
   Next i
End Sub

Private Sub CBValBud_Click()
   For i = 28 To 574 Step 21
       Columns(i).Hidden = Not FRM_Countries.CBValBud
   Next i
End Sub

oder so:
Code:
Private Sub CBValAY_Click()
   ChangeHiddenState FRM_Countries.CBValAY, 27
End Sub

Private Sub CBValBud_Click()
   ChangeHiddenState FRM_Countries.CBValBud, 28
End Sub

Private Sub ChangeHiddenState(ByVal bState As Boolean, ByVal iStartColumn As Long)
   Dim i As Long
   For i = iStartColumn To iStartColumn + 26 * 21 Step 21
       Columns(i).Hidden = Not bState
   Next i
End Sub

oder wie auch immer ...



Gruß Carsten
Hey,

danke für die Antworten.

@Carsten
Deinen Vorschlag habe ich ausprobiert, allerdings blendet er so nur die erste angesprochene Spalte aus.
Hast du eine Idee, woran das liegen könnte? Smile

Edit: Ich hatte einen Step zu wenig. Es funzt! Danke!! Allerdings verschwinden die Spalten, wenn ich in der CheckBox den Haken reinsetze (diese sollen eingeblendet werden, wenn der Haken gesetzt ist)
Wenn der haken nicht gesetzt wird, sollen diese verschwinden. Jemand eine Idee?

NinjaEdit2: Ich bin iwie selbst drauf gekommen, zumindest funktioniert dieser Code hier:

Ich danke dir Carsten  :18:

Code:
Private Sub CBValAY_Click()
ValAY = FRM_Categories_dyn.CBValAY
If ValAY = False Then
  For i = 25 To 1000 Step 21

      Columns(i).Hidden = Not FRM_Categories.CBValAY
     
  Next i
  End If
If ValAY = True Then
For i = 25 To 1000 Step 21

      Columns(i).Hidden = False
      Next
      End If
End Sub


Code:
Dim ValAY As Boolean
Dim ValBUD As Boolean
Dim ValPY As Boolean
Dim DVAbs As Boolean
Dim DVpercent As Boolean
Dim DVAbs2 As Boolean
Dim DVpercent2 As Boolean
Dim CosAY As Boolean
Dim CosBUD As Boolean
Dim CosPY As Boolean
Dim DeltaCospp As Boolean
Dim DeltaCospp2 As Boolean

Private Sub CBValAY_Click()
ValAY = FRM_Categories.CBValAY

  For i = 25 To 1000 Step 20
 
      Columns(i).Hidden = Not FRM_Countries.CBValAY
  Next i
 
End Sub

Private Sub CBValBud_Click()
  For i = 26 To 1000 Step 20
      Columns(i).Hidden = Not FRM_Countries.CBValBud
  Next i
End Sub
Hallo return,

ja, Du musst schon richtig kopieren ...

Ansonsten:
Wenn Du 20 Spalten zwischen den ausgeblendeten haben möchtest, dann solltest Du den Step wieder auf 21 setzen.
Und warum Du den Max-Wert auf 1000 gesetzt hast, das kann ich nicht nachvollziehen.


Gruß Carsten