ComboBoxen ausblenden
#1
Hallo!
Gibt es einen VBA Befehl der alle Comboboxen gleichzeitig ausblendet? Hab ein Formular bei dem ich viele einzelne Boxen habe und die würde ich gerne nach Bedarf gleichzeitig ein- bzw ausblenden.


Code:
Private Sub ToggleButton1_Click()
Dim TB As ToggleButton
Set TB = ToggleButton1
If TB.Value = True Then
   TB.Caption = "Hide schedule data"
   Application.ScreenUpdating = False

   
   ThisWorkbook.Worksheets("Tabelle1").ComboBox1.Visible = True
   ThisWorkbook.Worksheets("Tabelle1").ComboBox2.Visible = True
   ThisWorkbook.Worksheets("Tabelle1").ComboBox3.Visible = True
   ThisWorkbook.Worksheets("Tabelle1").ComboBox4.Visible = True
 
   Range("A1").Select

Else

   
   ThisWorkbook.Worksheets("Tabelle1").ComboBox1.Visible = False
   ThisWorkbook.Worksheets("Tabelle1").ComboBox2.Visible = False
   ThisWorkbook.Worksheets("Tabelle1").ComboBox3.Visible = False
   ThisWorkbook.Worksheets("Tabelle1").ComboBox4.Visible = False
   
   Application.ScreenUpdating = True
   TB.Caption = "Show schedule data"
   Range("A1").Select
End If
End Sub


Im Beispiel hab ich das mit 4 Combo Boxen gemacht. Im Original hab ich aber 60. Möchte deswegen nur ungern so eine Wahnsinns Liste erzeugen.

Danke schon mal für euren Input!


Gruß!
Top
#2
Hallo,

Code:
For i = 1 To 60
  Controls("ComboBox" & i).Visible = False
Next
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • diving_excel
Top
#3
Dankeschön!
Beim einfügen bekommen ich die Meldung: "Fehler beim Kompilieren: Sub oder Funktion definiert". Dabei wird "Controls" markiert. Muss ich hierfür noch etwas ergänzen?

Code:
Private Sub ToggleButton1_Click()
Dim TB As ToggleButton
Set TB = ToggleButton1
Dim i As Long


If TB.Value = True Then
   TB.Caption = "Hide schedule data"
   Application.ScreenUpdating = False

   For i = 1 To 60
       Me.Controls("ComboBox" & i).Visible = True
   Next
   
Else

   
   For i = 1 To 60
       Me.Controls("ComboBox" & i).Visible = False
   Next
   
   Application.ScreenUpdating = True
   TB.Caption = "Show schedule data"
   Range("A1").Select
End If
End Sub
Top
#4
Wenn du dir den Code von Klaus-Dieter genau ansiehst, wirst du erkennen, dass da nirgendwo was von Me.Controls steht :)
Schöne Grüße
Berni
Top
#5
Ups, mein Fehler, allerdings funktioniert das nach entfernen von Me. ebenfalls nicht. Erhalte die selbe  Fehlermeldung
Top
#6
Kann ich nicht nachvollziehen, bei mir läuft dein Code anstandslos durch.

Allerdings muss ich anmerken, dass dein Application.Screenupdating falsch platziert ist. Trifft Bedingung 1 zu, wird Screenupdating deaktiviert, aber nicht mehr aktiviert.
Daher gehört der Code für's Aktivieren/Deaktivieren vor bzw. nach dem If-Teil.

Und zur Fehlermeldung: Da steht hoffentlich "Sub oder Function NICHT definiert"?
https://docs.microsoft.com/de-de/dotnet/...ot-defined

Heißt dein Togglebutton womöglich anders?
Schöne Grüße
Berni
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • diving_excel
Top
#7
Hallo,

im Worksheet sind es keine Controls, sondern OleObjects.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • diving_excel
Top
#8
@Sabina: OMG, natürlich. Ich war auf eine Userform fixiert!
Schöne Grüße
Berni
Top
#9
Hallo,

so sollte es reichen:
Private Sub ToggleButton1_Click()
Dim i As Long
Dim TB As ToggleButton

Set TB = ToggleButton1
If TB.Value = True Then
TB.Caption = "Hide schedule data"
Else
TB.Caption = "Show schedule data"
End If
Application.ScreenUpdating = False
For i = 1 To 60
ThisWorkbook.Worksheets("Tabelle1").OLEObjects("ComboBox" & i).Visible = TB.Value
Next
Application.ScreenUpdating = True
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • diving_excel
Top
#10
Vielen Dank, hat geklappt!
Top


Gehe zu:


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