Registriert seit: 19.06.2016
Version(en): 2013
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?
Registriert seit: 12.04.2014
Version(en): Office 365
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:1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag 28
• Lago
Registriert seit: 10.04.2014
Version(en): 2016 + 365
16.12.2017, 10:07
(Dieser Beitrag wurde zuletzt bearbeitet: 16.12.2017, 10:07 von Rabe.)
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:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28
• Lago
Registriert seit: 19.06.2016
Version(en): 2013
16.12.2017, 14:03
(Dieser Beitrag wurde zuletzt bearbeitet: 16.12.2017, 14:03 von Lago.)
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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
16.12.2017, 15:08
(Dieser Beitrag wurde zuletzt bearbeitet: 16.12.2017, 15:08 von Rabe.)
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.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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.
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:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Lago
Registriert seit: 19.06.2016
Version(en): 2013
Hallo Uwe,
genau das wollte ich wissen. Danke für deine Erklärungen!