Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

alle Comboboxen in Userform ansprechen

Forumthread: alle Comboboxen in Userform ansprechen

alle Comboboxen in Userform ansprechen
05.01.2004 16:29:27
Andi_H
Hallo zusammen,

ich habe eine Userform welche mehrere Comboboxen enthält. Ich möchte nun prüfen ob diese nichtleer sind, weiß aber nicht genau we ich nur die CBs anspreche

dim combo as ComboBox
For each combo in me.controls
if combo.value <> "" then
....
end if
next

geht aber leider nicht, Typen unverträglich in der Zeile For ....

weiß jemand rat?

Vielen Dank vorab.

Grüße

Andi
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: alle Comboboxen in Userform ansprechen
05.01.2004 16:53:58
Bertram
Hallo Andi,

probier's mal so:


Private Sub CommandButton1_Click()
Dim crtl As Control
For Each ctrl In UserForm1.Controls
If TypeOf ctrl Is MSForms.ComboBox Then
If ctrl.Value = "" Then MsgBox "Combobox leer"
Else
MsgBox "Combobox nicht leer"
End If
Next ctrl
End Sub


Gruß
Bertram
Anzeige
AW: alle Comboboxen in Userform ansprechen
05.01.2004 17:01:13
Andi_H
Hi Bertram,

vielen Dank für deine Hilfe.
Leider durchläuft der Code aber alle Objects, nicht nur die Combos.
Bin jetzt leider mehr im Forum, falls du aber noch Tips auf lager hast, laß hören, spätestens am Mittwoch muß ich ja doch wieder in die arbeit und kann dann ein bißchen rumprobieren.

Gruß

Andi
Anzeige
AW: alle Comboboxen in Userform ansprechen
07.01.2004 12:31:25
Bertram
Hallo Andi,

hab momentan keine Lösung parat. In einem anderen Program von mir funktionierts. Habe dort allerdings auch noch mit der Tag-Eigenschaft gearbeitet. Falls ich es ncoh hinkriege poste ich natürlch.

Gruß
Bertram
AW: alle Comboboxen in Userform ansprechen
07.01.2004 13:53:55
Andi_H
Hi Bertram,

dankeschön für deine Hilfe. Ich habe nach langem Tüffteln eine Lösung gefunden

Dim tb As Object
For Each tb In Me.Controls
If TypeName(tb) = "ComboBox" Then

End If
Next

Gruß
Andi
Anzeige
AW: alle Comboboxen in Userform ansprechen
07.01.2004 14:11:20
Bertram
Hallo Andi,

wenn's funktioniert. Prima:-)

Gruß
Bertram
;
Anzeige

Infobox / Tutorial

Alle Comboboxen in Userform ansprechen


Schritt-für-Schritt-Anleitung

Um alle Comboboxen in einer Userform anzusprechen und zu prüfen, ob sie leer sind, kannst Du den folgenden VBA-Code verwenden:

Private Sub CommandButton1_Click()
    Dim ctrl As Control
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.ComboBox Then
            If ctrl.Value = "" Then
                MsgBox "Combobox leer"
            Else
                MsgBox "Combobox nicht leer"
            End If
        End If
    Next ctrl
End Sub
  1. Öffne die Userform in Deinem Excel-Projekt.
  2. Füge einen Button hinzu (z.B. CommandButton1).
  3. Klicke mit der rechten Maustaste auf den Button und wähle "Code anzeigen".
  4. Füge den obigen Code in das Codefenster ein.
  5. Teste die Userform und klicke auf den Button, um den Status der Comboboxen zu überprüfen.

Häufige Fehler und Lösungen

Fehler: "Typen unverträglich"

  • Dieser Fehler tritt auf, wenn Du versuchst, eine Control zu durchlaufen, die kein ComboBox-Objekt ist. Stelle sicher, dass Du die TypeOf-Anweisung verwendest, um nur Comboboxen anzusprechen.

Fehler: Alle Objekte werden durchlaufen

  • Wenn Du nicht nur die Comboboxen, sondern auch andere Steuerelemente durchläufst, achte darauf, dass Du das TypeOf-Statement korrekt anwendest, wie im obigen Beispiel.

Alternative Methoden

Eine alternative Methode, um mit Comboboxen zu arbeiten, ist die Verwendung der Tag-Eigenschaft. Du kannst dieser Eigenschaft einen Wert zuweisen, um bestimmte Comboboxen zu kennzeichnen und dann nur diese zu überprüfen:

Private Sub CommandButton1_Click()
    Dim ctrl As Control
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.ComboBox And ctrl.Tag = "prüfen" Then
            If ctrl.Value = "" Then
                MsgBox "Combobox " & ctrl.Name & " leer"
            Else
                MsgBox "Combobox " & ctrl.Name & " nicht leer"
            End If
        End If
    Next ctrl
End Sub

Setze den Tag der gewünschten Comboboxen auf "prüfen", um nur diese in Deinem Code zu berücksichtigen.


Praktische Beispiele

Hier sind einige praktische Beispiele, die Du in Deiner Userform verwenden kannst, um die Funktionsweise der Comboboxen zu testen:

  1. Prüfung aller Comboboxen auf leere Werte: Nutze den oben genannten Code, um eine einfache Überprüfung durchzuführen.

  2. Benutzerdefinierte Meldungen basierend auf den Werten: Passe die MsgBox-Anzeigen an, um spezifischere Informationen über die leeren oder gefüllten Comboboxen zu geben.

  3. Zählung der leeren Comboboxen: Du kannst eine Zählvariable einfügen, um die Anzahl der leeren Comboboxen zu zählen und diese am Ende auszugeben:

Dim leerCount As Integer
leerCount = 0

For Each ctrl In Me.Controls
    If TypeOf ctrl Is MSForms.ComboBox Then
        If ctrl.Value = "" Then
            leerCount = leerCount + 1
        End If
    End If
Next ctrl

MsgBox leerCount & " Combobox(en) leer."

Tipps für Profis

  • Verwende With-Anweisungen: Um den Code lesbarer zu machen, kannst Du With-Anweisungen verwenden, wenn Du mehrere Eigenschaften eines Objekts bearbeitest.

  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass der Code auch bei unerwarteten Eingaben stabil bleibt.

  • Testen in verschiedenen Excel-Versionen: Stelle sicher, dass Dein VBA-Code in den verschiedenen Versionen von Excel (insbesondere Excel 2016 und neuer) getestet wird, um Kompatibilitätsprobleme zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Comboboxen gleichzeitig ansprechen?
Du kannst die For Each-Schleife verwenden, um durch alle Controls in Deiner Userform zu iterieren, und mit TypeOf nur die Comboboxen ansprechen.

2. Was mache ich, wenn die Comboboxen nicht sichtbar sind?
Stelle sicher, dass die Sichtbarkeit der Comboboxen in den Eigenschaften auf "True" gesetzt ist, und überprüfe, ob sie sich auf der Userform befinden.

3. Kann ich die Comboboxen mit einer Liste füllen?
Ja, Du kannst die List-Eigenschaft der Comboboxen verwenden, um Daten aus einer Tabelle oder einem Array hinzuzufügen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige