ComboBoxen auf Userform unsichtbar machen
#1
Hallo,

ich habe auf meiner Userform eine ganze Reihe von ComboBoxen die beim Start des Programmes standardmäßig unsichtbar sein sollen.

Das mache ich dann so:

Dim ctr As Control
For Each ctr In UserForm1.Controls
If TypeOf ctr Is MSForms.ComboBox Then ctr.Visible = False
Next

Zu diesem Code hätte ich gerne eine Alternative. Denn wie ihr seht muß ctr über die for each Schleife alle Controls auf meiner Userform durchlaufen.
Mit der If- Bedingung wird dann weiter ausgewählt, ob das Control auch ein ComboBox Element ist.
Kann ich den Code nicht so gestalten, dass in der For each Schleife von vornherein nur ComboBox-Elemente durchlaufen werden?
Top
#2
Hallo

und warum setzt du dann die Comboboxen nicht von vornherein
in den Eigenschaften auf unsichtbar?
dann brauchts dafür keinen Code

MfG Tom
[-] Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:
  • Lago
Top
#3
Hi,

ich stimme Tom zu, aber wenn Du unbedingt willst, könntest Du es so machen:
Code:
'
   For i = 1 To 32            'alle Comboboxen auf unsichtbar setzen
      Me.Controls("ComboBox" & i).Visible = False
   Next i
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • Lago
Top
#4
Hallo Ralf,
ich weiß dass man die ComboBoxen in dem Eigenschaftsfenster auf invisibel schalten kann. Auch deine Methode ist mir bestens bekannt.
Was ich nicht weiß ist, ob ich schon bei den Deklarationen die Auswahl so sehr einschränken kann, dass ich  nur noch ComboBox-Objekte
in der for each Schleife habe. Mir geht es hier um das Erlernen mit dem Umgang von Objekten. Und ja, diesbezüglich ist wahrscheinlich
meine Frage recht unglücklich gewählt.

Aber vielleicht weiß ja jemand ob so etwas geht.
Top
#5
Hi,

deswegen hatte ich Dir doch den Code gezeigt, der genau nur die ComboBoxen in der Userform anspricht. Da braucht es kein "For each"

Mußt halt die ComboBoxen vorher zählen.
Top
#6
Hallo Lago,

(16.12.2017, 14:03)Lago schrieb: Mir geht es hier um das Erlernen mit dem Umgang von Objekten. ...

Aber vielleicht weiß ja jemand ob so etwas geht.

mit den ActiveX-Steuerelementen geht es (leider) nur so wie Du es gemacht hast.
Rabes "Version" geht davon aus, dass die Namen der jeweiligen Elementetypen anfangs alle gleich sind und so bleiben. Undecided

Mit den Formularsteuerelementen geht/ging das direkte Ansprechen der Elemente jedoch schon immer so, wie Du das logischerweise erwartest. Allerdings wurde das von MS in der Hilfe seit E97? ausgeblendet und später ganz entfernt.
Sub SchleifeInFormularComboboxen()
Dim oCombobox As DropDown
For Each oCombobox In ActiveSheet.DropDowns
Debug.Print oCombobox.Name & ": " & oCombobox.TopLeftCell.Address
Next oCombobox
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Lago
Top
#7
Hallo Uwe,

genau das wollte ich wissen. Danke für deine Erklärungen!
Top


Gehe zu:


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