Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Probleme beim Laden von ComboBoxen

Probleme beim Laden von ComboBoxen
13.04.2017 13:45:20
ComboBoxen
Hallo liebes Forum,
ich stehe vor folgendem Problem: Ich habe eine Eingabemaske per VBA programmiert und nutze für diese verschiedene Comboboxen. Des Weiteren sind auf der Eingabemaske vier OptionButtons installiert. Je nachdem welcher OptionButton ausgewählt ist, sollen die Comboboxen auch entsprechend mit Inhalt befüllt sein, d.h wird zum Beispiel OptionButton1 ausgewählt, sollen die Comboboxen einen anderen Inhalt haben wie wenn zum Beispiel OptionButton2 ausgewählt wird usw...
Dazu verwende ich folgenden Code:
Private Sub UserForm_Initialize()
Dim i, j As Integer
With Workbooks(ThisWorkbook.Name).Worksheets("Set-up")
' ComboBox laden
i = 24 ' Reihe
j = 1 ' Spalte
Do
If UserForm1.OptionButton1.Value = True Then
If .Cells(i, j).Value = "STATE_" Then
UserForm1.ComboBox1.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "AREA_" Then
UserForm1.ComboBox2.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "RESP" Then
UserForm1.ComboBox3.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "OWNER" Then
UserForm1.ComboBox5.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "MANAGER" Then
UserForm1.ComboBox4.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "TARGET_1" Then
UserForm1.ComboBox6.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "TARGET_2_" Then
UserForm1.ComboBox7.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "TARGET_3_" Then
UserForm1.ComboBox8.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "TYPE" Then
UserForm1.ComboBox9.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "PRIO" Then
UserForm1.ComboBox10.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "PATH_" Then
UserForm1.ComboBox11.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "SITE_BAY" Then
UserForm1.ComboBox12.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "SITE_HAM" Then
UserForm1.ComboBox13.AddItem .Cells(i, j + 1).Value
End If
ElseIf UserForm1.OptionButton2.Value = True Then
If .Cells(i, j).Value = "STATE_" Then
UserForm1.ComboBox1.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "AREA_" Then
UserForm1.ComboBox2.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "RESP" Then
UserForm1.ComboBox3.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "MANAGER_FE" Then
UserForm1.ComboBox4.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "TYPE" Then
UserForm1.ComboBox9.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "PRIO" Then
UserForm1.ComboBox10.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "PATH" Then
UserForm1.ComboBox11.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "SITE_BAY" Then
UserForm1.ComboBox12.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "SITE_HAM" Then
UserForm1.ComboBox13.AddItem .Cells(i, j + 1).Value
End If
ElseIf UserForm1.OptionButton3.Value = True Then
If .Cells(i, j).Value = "STATE_" Then
UserForm1.ComboBox1.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "AREA" Then
UserForm1.ComboBox2.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "PROJ" Then
UserForm1.ComboBox3.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "OWNER" Then
UserForm1.ComboBox5.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "MANAGER_CD" Then
UserForm1.ComboBox4.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "TARGET_1_" Then
UserForm1.ComboBox6.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "TYPE" Then
UserForm1.ComboBox9.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "PRIO" Then
UserForm1.ComboBox10.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "PATH" Then
UserForm1.ComboBox11.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "SITE_BAY" Then
UserForm1.ComboBox12.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "SITE_HAM" Then
UserForm1.ComboBox13.AddItem .Cells(i, j + 1).Value
End If
ElseIf UserForm1.OptionButton4.Value = True Then
If .Cells(i, j).Value = "STATE_" Then
UserForm1.ComboBox1.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "AREA" Then
UserForm1.ComboBox2.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "PROJ" Then
UserForm1.ComboBox3.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "OWNER" Then
UserForm1.ComboBox5.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "MANAGER_DF" Then
UserForm1.ComboBox4.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "TYPE_(METHOD)_" Then
UserForm1.ComboBox9.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "PRIO" Then
UserForm1.ComboBox10.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "PATH" Then
UserForm1.ComboBox11.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "SITE_BAY" Then
UserForm1.ComboBox12.AddItem .Cells(i, j + 1).Value
End If
If .Cells(i, j).Value = "SITE_HAM" Then
UserForm1.ComboBox13.AddItem .Cells(i, j + 1).Value
End If
End If
i = i + 1
Loop Until .Cells(i, j).Value = "" Or i = 400
End With
Noch zur Info: Der Inhalt für die Comboboxen kommt aus dem Reiter "Set-Up" (Spalte 1 und ab Zeile 24).
Im Moment ist es so, dass keine Combobox mit Inhalt gefüllt ist, sondern alle leer sind unabhängig davon welcher OptionButton aktiviert ist. Ich vermute es liegt an dem "i = i + 1" im Code. Kann das sein? Kann mir da jemand weiterhelfen?
Vielen Dank im Voraus und viele Grüße!

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme beim Laden von ComboBoxen
13.04.2017 17:07:47
ComboBoxen
Hallo
Ich vermute mal beim UserForm_Initialize()
sind alle OptionButton deaktiviert
Du musst also das Click-Ereignis der OptionButton verwenden.
Bsp.
Option Explicit
Private Sub OptionButton1_Click()
MsgBox "OptionButton1"
End Sub
Private Sub OptionButton2_Click()
MsgBox "OptionButton2"
End Sub
Private Sub OptionButton3_Click()
MsgBox "OptionButton3"
End Sub
Private Sub UserForm_Initialize()
MsgBox "erster Aufruf des UForms"
If OptionButton1 Then MsgBox "OptionButton1"
If OptionButton2 Then MsgBox "OptionButton2"
If OptionButton3 Then MsgBox "OptionButton3"
End Sub
Gruß Matthias
Anzeige
AW: Probleme beim Laden von ComboBoxen
13.04.2017 17:24:22
ComboBoxen
Hi Matthias L,
danke für deine Antwort. Allerdings hätte ich dazu noch eine frage: Wo genau kommen in deinen Code dann die DO-Schleifen rein, die ich in meinem Code habe?
Viele Grüße!
AW: Probleme beim Laden von ComboBoxen
13.04.2017 17:30:01
ComboBoxen
Da ich keine Ahnung habe, was genau du vorhast (sprich: deine Datei nicht sehen kann), kann ich die Frage nicht beantworten.
Du solltest schon die Originaldatei posten (oder eine gleichwertige Beispieldatei).
Ausserdem glaube ich, dass für deinen Fall eine DO-WHILE-Schleife was bringen würde; schon eher eine FOR-NEXT-Schleife.
die Frage war ja auch nicht an Dich ...
13.04.2017 17:38:51
Matthias
Bleib doch einfach in Deinem Beitragszweig.
Aber ok, ich bin dann raus.
Anzeige
AW: die Frage war ja auch nicht an Dich ...
13.04.2017 17:55:58
onur
Sorry Matthias L,
war ein Versehen und keine Absicht - Habe die an Dich gerichtete Antwort gar nicht gesehen und den falschen Zweig erwischt.
nochmal Zeit investieren, Nee!
13.04.2017 18:10:51
Matthias
Hallo
So, so
Habe die an Dich gerichtete Antwort gar nicht gesehen und den falschen Zweig erwischt.
Nicht gesehen aber angeklickt ?
Nee ich bin jetzt raus.
Zumal Chris jetzt meine Vermutung auch nochmal wiederholen muss.
Hat Chris sicher auch nicht gesehen ;-)
Gruß Matthias
AW: nochmal Zeit investieren, Nee!
13.04.2017 18:18:24
onur
Genau das passiert halt, wenn man man in diesem Forum eine Mail bekommt, obwohl man selber gar keine Antwort erhalten hat, sondern ein Anderer UND man nicht genau hinguckt, wer gemeint ist.
Sorry noch mal.
Anzeige
alles gut ... :-) frohes Fest für ALLE ... owT
13.04.2017 18:29:51
Matthias
AW: nochmal Zeit investieren, Nee!
13.04.2017 18:22:20
ChrisL
Hi Matthias
Ich war schon im Ostermodus und hatte zu lange an der Antwort rumstudiert (schön chillig vor dem langen Wochenende). Nachdem ich die Frage schon um die Mittagszeit gelesen hatte und nichts passiert ist (vermutlich weil eine Beispieldatei schon verdammt praktisch gewesen wäre), hatte ich auch nicht damit gerechnet, dass sich plötzlich alle auf den Beitrag stürzen ;)
Geniess die freien Tage *jauchzer*
cu
Chris
alles gut ... :-) frohes Fest für ALLE ... owT
13.04.2017 18:28:47
Matthias
AW: alles gut ... :-) frohes Fest für ALLE ... owT
13.04.2017 18:31:07
onur
Wünsche ich Euch ebenfalls.
AW: Probleme beim Laden von ComboBoxen
13.04.2017 17:18:24
ComboBoxen
Hi nieselm123,
Dein code ist so programmiert:
Egal welcher Optionbutton gewählt ist, die comboboxen werden IMMER mit dem Inhalt von Z24S2 befüllt, wenn der Inhalt von Z24S1 "STATE_" oder "AREA" oder ... usw entspricht, weil i und j sich ja nicht ändern.
Ich weiss nicht was du genau vorhattest, aber "programmiert" hast du was ganz anderes.
Wahrscheinlich wolltest du eine Schleife einbauen, aber hast du nicht.
Mit Reiter meinst du wohl Blatt, aber du musst VBA schon sagen, welches blatt du meinst, sonst wird immer das z.Z. aktivierte Blatt genommen.
Abgesehen davon brauchst du nicht 4 Blöcke (für jedes Optionbutton einen), sondern nur einen, zu programmieren, wenn du mit Variablen arbeitest.
Anzeige
AW: Probleme beim Laden von ComboBoxen
13.04.2017 17:29:03
ComboBoxen
Hallo Onur,
das wollte ich auch, was du schreibst! Ich frage mich nur, warum alle Comboboxen leer sind und mit keinem Inhalt gefüllt sind unabhängig von dem OptionButton, den ich auswähle...
Trotzdem vielen Dank!
AW: Probleme beim Laden von ComboBoxen
13.04.2017 18:12:38
ComboBoxen
Ich vermute mal:
Die Befüllung soll von Spalte 1 erfolgen, aber du schreibst j+1 (also Spalte 2).
Wenn Spalte2 leer ist, füllst du alles mit "".
Sonst ist dein Code soweit ok (bis auf die vielen Blöcke, was man optimieren könnte), ich habe offensichtlich deinen Code nur überflogen - Sorry.
Wenn die ComboBoxen mit "STATE_" , AREA" usw befüllt werden sollen, verstehe ich nicht, warum du die IFs eingebaut hast und ich kapiere den Unterschied zw. den verschiedenen Optionbuttons nicht - Was genau soll denn anders sein, wenn z.B. Option1 statt Option2 angeklickt ist?
Gruß
Onur
Anzeige
AW: Probleme beim Laden von ComboBoxen
13.04.2017 17:34:55
ComboBoxen
Hi
Der Loop sieht auf den ersten Blick OK aus.
Du könntest mal einen Haltepunkt setzen und den Code schrittweise prüfen. Ich vermute es liegt daran, dass die OptionButtons beim Initialisieren noch gar nicht aktiv sind und somit keine der Bedingungen erfüllt ist.
Ich denke du solltest den Code in eine Standardprozedur auslagern
Sub Mach()
'Code
End Sub
und dann im Change Ereignis der OptionButtons die Prozedur aufrufen (Call Mach).
Losgelöst vom eigentlichen Problem wäre ein kleiner erster Schritt zur Optimierung vom Code, wenn du anstelle der vielen If-Then die Select-Case Variante verwenden würdest. Es macht den Code nicht schneller, aber evtl. übersichtlicher.
Select Case .Cells(i, j).Value
Case "STATE_": UserForm1.ComboBox1.AddItem .Cells(i, j + 1).Value
Case "AREA_": UserForm1.ComboBox2.AddItem .Cells(i, j + 1).Value
'usw.
End Select
Weiter solltest du prüfen, welche Bedingungen nicht sowieso immer zutreffen. Ich habe die unterschiedlichen Optionen nicht im Detail verglichen, aber z.B. STATE_ lädst du bei jeder Auswahl, also braucht es keine Wenn-Bedingung.
Bitte für Anschlussfragen eine Beispieldatei ins Forum laden und die Frage als offen kennzeichnen (bin beim Ostereiersuchen).
cu
Chris
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige