Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Schleife für automatisches Spalten ausblenden
#1
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
Antworten Top
#2
Hallo Thorben,

du kannst anstatt der Buchstaben auch die Spaltennummer eingeben und in eine For-Schleife einbauen.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#3
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
[-] Folgende(r) 1 Nutzer sagt Danke an DbSam für diesen Beitrag:
  • mort92
Antworten Top
#4
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
Antworten Top
#5
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste