Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Combobox auf Basis von Bedingungen füllen

Combobox auf Basis von Bedingungen füllen
Bedingungen
Hallo z'sammn,.
ich bitte um Hilfe, Lösungen, Denkanstöße.
Ich habe in einer Tabelle "Räume" einen Raum z.B. "Warteraum A2" in Spalte A. Der ist von Startdatum z.B. "19.03.2010" in Spalte I bis Endedatum z.B. "26.03.2010" in Spalte J reserviert. Weitere Räume heißen "Besprechungsraum OG1" oder "Präsentation 211" oder auch "Warteraum B100". Die Tabelle ist bis zur Zeile 300 gefüllt. Leerzeilen Fehlanzeige.
In einer UF ist für die angeforderte Reservierung eines Raumes in einer TB die Klasse des Raumes (die steht in Spalte B) zu bestimmen, z.B. "Warteraum". In zwei weiteren TB ist der Reservierungszeitraum (von - bis) einzutragen. Auf dieser Basis sollen jetzt in der Combobox1 nur die Räume der gewählten Klasse angezeigt werden, die zum Wunschtermin noch nicht belegt sind.
Ich steh gerade auf dem Schlauch; wie sollte meine Schleife aussehen mit der ich die Combobox1 fülle?
Angenommen es steht eine Reservierungsanfrage für einen Warteraum für den 24.03.2010 - 03.04.2010 an. Dann soll der "WarteraumA" in der Combobox1 natürlich nicht erscheinen.
Bin gespannt auf die Lösungen
Gruß
Jochen
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Korrektur ...
20.03.2010 16:06:30
JOWE
Hallo Tino,
danke erst einmal.
Habe hier zu Hause statt Office 2003 jetzt 2007 auf dem Notebook.
Da fehlt DTPICKER. Download und Registrierung von MSCOMCTL.OCX schlägt leider fehl; Fehlercode 0x8002801c. Dein Code für die Combobox sieht gut aus. Werde am Montag im Büro testen.
Gruß
Jochen
Anzeige
AW: Korrektur ...
20.03.2010 16:17:46
Tino
Hallo,
zum testen kannst Du auch zwei Textfelder einbauen und den Code entsprechend anpassen.
Oder vielleicht hast Du das Kalender Steuerelement, dann baue dies ein.
Gruß Tino
AW: Korrektur ...
20.03.2010 16:25:40
JOWE
Tino,
hatte gerade schon den DTPicker mit dem Kalendersteuerelement ersetzt.
Kleine Änderung der Makronamen und schon fluppt es.
Klappt prima.
Genau so war das Ziel. Danke
Jochen
Anzeige
AW:Hilfe, Räume ohne Datum fehlen
20.03.2010 21:04:26
JOWE
Tino,
leider fehlen in der Combobox alle Räume die überhaupt keinen Eintrag in den Spalten I und/oder J haben.
Fehlende Einträge aber bedeuten eben, dass der Raum verfügbar ist.
Wie baue ich dass noch ein?
Vorab schon mal vielen Dank für Deine Mühe.
Gruß
Jochen
müsste so gehen.
20.03.2010 21:46:02
Tino
Hallo,
ich dachte es wäre immer ein Datum drin.
Ersetzen die Sub durch diese.
Private Sub SucheFreierRaum(Datum_von&, Datum_Bis&)
Dim oDic As Object, meAr(), meArDate()
Dim A As Long
Set oDic = CreateObject("Scripting.Dictionary")
With Tabelle1
'bereich anpassen, hier ohne Überschrift
meAr = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Value
meArDate = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Offset(0, 8).Resize(, 2).Value2
End With
For A = 1 To UBound(meAr)
If meArDate(A, 1) = "" And meArDate(A, 2) = "" Then
oDic(meAr(A, 1)) = 0
Else
If (meArDate(A, 1) > Datum_von And meArDate(A, 1) > Datum_Bis) Then
If (meArDate(A, 2) > Datum_von And meArDate(A, 2) > Datum_Bis) Then
If (Datum_von  0 Then
.Clear
.List = oDic.keys
.Enabled = True
Else
.Clear
.AddItem "kein Freier Raum"
.ListIndex = 0
.Enabled = False
End If
End With
End Sub
Gruß Tino
Anzeige
AW: Ja. super! Thx J. oT
20.03.2010 22:07:28
JOWE
;
Anzeige
Anzeige

Infobox / Tutorial

Combobox in Excel basierend auf Bedingungen füllen


Schritt-für-Schritt-Anleitung

Um eine Combobox in Excel basierend auf bestimmten Bedingungen zu füllen, kannst Du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)", gehe zu "Einfügen" und wähle "Modul".

  3. Kopiere den folgenden VBA-Code in das Modul:

    Private Sub SucheFreierRaum(Datum_von As Date, Datum_Bis As Date)
       Dim oDic As Object, meAr(), meArDate()
       Dim A As Long
       Set oDic = CreateObject("Scripting.Dictionary")
       With Tabelle1
           meAr = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Value
           meArDate = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Offset(0, 8).Resize(, 2).Value2
       End With
       For A = 1 To UBound(meAr)
           If meArDate(A, 1) = "" And meArDate(A, 2) = "" Then
               oDic(meAr(A, 1)) = 0
           Else
               If (meArDate(A, 1) > Datum_von And meArDate(A, 1) > Datum_Bis) Then
                   If (meArDate(A, 2) > Datum_von And meArDate(A, 2) > Datum_Bis) Then
                       oDic(meAr(A, 1)) = 0
                   End If
               End If
           End If
       Next A
       With Me.ComboBox1
           If oDic.Count > 0 Then
               .Clear
               .List = oDic.keys
               .Enabled = True
           Else
               .Clear
               .AddItem "kein Freier Raum"
               .ListIndex = 0
               .Enabled = False
           End If
       End With
    End Sub
  4. Passen die Tabelle: Achte darauf, dass die Tabelle1 die richtigen Daten enthält, und die Spalten I und J die Reservierungsdaten sind.

  5. Rufe die Funktion auf: Stelle sicher, dass die Funktion beim Ändern von Reservierungsdaten aufgerufen wird.


Häufige Fehler und Lösungen

  • Fehlende Einträge in der Combobox: Wenn Räume fehlen, die keine Reservierung haben, stelle sicher, dass die Bedingung If meArDate(A, 1) = "" And meArDate(A, 2) = "" korrekt implementiert ist.
  • Fehler beim Kompilieren: Überprüfe, ob Du alle benötigten Bibliotheken aktiviert hast, insbesondere bei älteren Excel-Versionen.

Alternative Methoden

Falls Du keine VBA-Kenntnisse hast, kannst Du auch eine Datenvalidierung nutzen, um eine ähnliche Funktionalität zu erreichen. Gehe dazu wie folgt vor:

  1. Datenbereich definieren: Markiere die Zellen mit den verfügbaren Räumen.
  2. Datenvalidierung: Wähle die Zelle aus, in der die Auswahl erscheinen soll, gehe zu "Daten" > "Datenvalidierung".
  3. Liste wählen: Setze die erlaubte Eingabe auf "Liste" und wähle den Bereich der verfügbaren Räume aus.

Praktische Beispiele

Hier ist ein Beispiel für die Nutzung der SucheFreierRaum-Sub:

Private Sub CommandButton1_Click()
    SucheFreierRaum #24.03.2010#, #03.04.2010#
End Sub

In diesem Beispiel wird die Combobox mit verfügbaren Warteräumen gefüllt, wenn Du auf einen Button klickst.


Tipps für Profis

  • Dynamische Bereiche: Nutze dynamische Bereiche, um sicherzustellen, dass Deine Combobox immer die aktuellsten Daten enthält. Das kannst Du durch die Verwendung von OFFSET und COUNTA erreichen.
  • Benutzerfreundlichkeit: Füge Tooltips oder Hinweise hinzu, um die Benutzerführung zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich die Combobox automatisch aktualisieren?
Du kannst das Worksheet_Change-Ereignis verwenden, um die Combobox bei Änderungen in den relevanten Zellen automatisch zu aktualisieren.

2. Funktioniert das auch in Excel 365?
Ja, der VBA-Code ist mit Excel 365 kompatibel. Achte jedoch darauf, dass die entsprechenden Berechtigungen für Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige