Das Archiv des Excel-Forums

ComboBox

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: ComboBox
von: Peter R

Geschrieben am: 06.08.2008 11:39:02

Hallo an alle Excler,
und noch ne Frage für die Spezis.
Ich habe eine Combobox mit einer bestimmten Auswahl an Projekten. Bei jeder Auswahl soll was anderes gemacht werden. Funktioniert auch tadellos. Aber wie sieht es aus, wenn ein Neues Projekt hinzukommt? Gibt es eine Möglichkeit dieses in die vorhande Combobox festmit einzubringen?
Ich hatte mir das in etwa so vorgestellt, dass ich im Auswahlfeld einen Punkt "NEUES PROJEKT" nenne, und bei Auswahl dieses Punktes eine InputBox aufgeht, wo man nach dem Namen gefragt wird und er diesen Namen wiederrum an die Liste der Combobox weitergibt und speichert, so dass dieses Projekt beim nächsten Start der ComboBox mit in der Liste steht.
Hoffe Ihr habt reichlich Ideen (vielleicht auch Lösungen) für mich. :-)
Gruß
Peter

Bild

Betrifft: AW: ComboBox
von: Roland Hochhäuser
Geschrieben am: 06.08.2008 11:44:18
Hallo Peter,
das kommt darauf an, wie die bisherigen Projekte in die Combobox gekommen sind: über RowSource oder über AddItem. Befindet sich die Combobox in einem Tabellenblatt oder in einer Userform?
Gruß
Roland Hochhäuser

Bild

Betrifft: AW: ComboBox
von: Peter R

Geschrieben am: 06.08.2008 11:50:06
Hallo Roland,
die Combo befindet sich in einer Userform und die bisherigen sind über additem reingeschrieben.
Gruß
Peter

Bild

Betrifft: AW: ComboBox
von: Roland Hochhäuser
Geschrieben am: 06.08.2008 11:59:10
Dann folgender Ansatz:


Private Sub ComboBox1_Change()
Dim strProjekt As String
If ComboBox1.Value = "Neues Projekt" Then
strProjekt = InputBox("Name des neuen Projektes eingeben", "Projekt hinzufügen")
If Len(strProjekt) > 0 Then ComboBox1.AddItem strProjekt
End If
End Sub



Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "Neues Projekt"
.AddItem "Projekt1"
.AddItem "Projekt2"
.AddItem "Projekt3"
End With
End Sub


Kannst Du was damit anfangen?
Gruß
Roland Hochhäuser

Bild

Betrifft: AW: ComboBox
von: Peter R

Geschrieben am: 06.08.2008 12:17:22
Hallo Roland,
vielen Dank. Werde es heute noch ausprobieren und Rückmeldung erstatten.
Es ist dann aber auch so, dass das neu angelegte Projekt in dem Initialize dauerhaft gespeichert wird?
Gruß
Peter

Bild

Betrifft: AW: ComboBox
von: Roland Hochhäuser
Geschrieben am: 06.08.2008 12:22:57
Hallo Peter,
nein, das neue Projekt ware dann weg. Wenn Du eine dauerhafte Speicherung auch der neue(n) Projekte erreichen willst, darfts Du die Projekte nicht "hart" codieren, sondern müsstest die Projektnamen irgendwo in einer Tabelle abspeichern und den Bereich beim Start der UF einlesen lassen.
Gruß
Roland Hochhäuser

Bild

Betrifft: AW: ComboBox
von: Peter R

Geschrieben am: 06.08.2008 12:36:54
Hallo Roland,
genau da ist das Problem. Im Laufe des Jahres kommen neue Projekte hinzu, deren Namen ich aber noch nicht kenne! Du meinst also, über eine Hilfstabelle, wo man die Projekte einmal einträgt und die uf dann auf diese Tabelle (Bereich zugreift). Könnte ja die noch nicht benannten Projekte erstmal mit Projekt1 oder ähnlich bezeichen und im nachhinein nur ändern. Mal sehen, wie weit ich komme. :-)
Erstmal vielen Dank. Ich lass die Frage aber offen, falls noch andere Ideen vorhanden sind.
Gruß
Peter

Bild

Betrifft: AW: ComboBox
von: Peter R
Geschrieben am: 06.08.2008 16:59:51
Hallo Roland,
habe es jetzt halt doch mit einer Hilfstabelle gemacht.
Aber jetzt habe ich ein anderes Problem:
Wie kann ich nun das ausgewählte Projekt über Case ansprechen ohne den Projektnamen zu hinterlegen?
Da hapert bei mir der Denkprozess!!! :-)
Habe übrigens die Eigenschaft Rowsource verwendet, da ein dynamisches einlesen leider nicht geklappt hat. Hab da wahrscheinlich irgendwo einen Denkfehler. Dynamisch soll heißen, dass er Leerzeilen nicht mit in der Auswahl anzeigt.
Gruß
Peter

Bild

Betrifft: AW: ComboBox
von: Roland Hochhäuser

Geschrieben am: 06.08.2008 17:41:27
Hallo Peter,
dann zeig mal deinen Code (ggfs. Tabelle hochladen), damit ich sehen kann, wo es klemmt.
Gruß
Roland Hochhäuser

Bild

Betrifft: AW: ComboBox
von: Peter R
Geschrieben am: 06.08.2008 18:44:20
Hallöchen Roland,
hab es jetzt mit viel probieren hinbekommen, dass er mir nur die gefüllten Zellen ausliest.
Fraglich ist jetzt nur noch, wie ich die Auswahl aus der zweite, bzw. dritten uf (die aus der ersten aufgerufen werden) über Case anzusprechen um etwas bestimmtes auszuführen.
Hier mal die erste uf:


Private Sub AufgabenwahlCombo_Change()
Select Case AufgabenwahlCombo.Value
Case "Auftragskennzahlen für EK bearbeiten"
Call ProjektAuswahlEK.Show
Case "Auftragskennzahlen für ZK bearbeiten"
Call ProjektAuswahlZK.Show
Case "Schulungszeit herausfiltern"
Case "Wandlungsquote berechnen"
Call ProjektAuswahlZK.Show
End Select
End Sub



Private Sub Userform_Initialize()
With Worksheets("Tabelle1")
AufgabenwahlCombo.RowSource = Range(.Range("b1"), .Range("b1").End(xlDown)).Address
End With
End Sub


zweite uf:


Private Sub ProjektAuswahlCombo_Change()
End Sub



Private Sub Userform_Initialize()
With Worksheets("Tabelle1")
ProjektAuswahlCombo.RowSource = Range(.Range("a1"), .Range("a1").End(xlDown)).Address
End With
End Sub


dritte uf:


Private Sub ProjektAuswahlCombo2_Change()
End Sub



Private Sub Userform_Initialize()
With Worksheets("Tabelle1")
ProjektAuswahlCombo2.RowSource = Range(.Range("a1"), .Range("a1").End(xlDown)).Address
End With
End Sub


So, nun würde ich ganz gerne die Auswahl, die in der ersten uf (falls keine uf hinterlegt ist), sowie die Auswahl der zweiten und dritten uf über case ansprechen. Oder habe ich mich da in meinen Gehirnwindungen verirrt?
Gruß
Peter

Bild

Betrifft: AW: ComboBox
von: Roland Hochhäuser

Geschrieben am: 06.08.2008 19:17:57
Hallo Peter,
Du kommst jetzt mit einer völlig andere Aufgabenstellung, zunächst ging es doch um das Abspeichern von per Inputboxen hinzugefügten Items zur Combobox _einer_ Userform. Das kann man so machen:
Option Explicit


Private Sub ComboBox1_Change()
Dim strProjekt As String
If ComboBox1.Value = "Neues Projekt" Then
strProjekt = InputBox("Name des neuen Projektes eingeben", "Projekt hinzufügen")
If Len(strProjekt) > 0 Then
With ThisWorkbook.Worksheets(1)
.Range("B" & .Range("B1").End(xlDown).Row + 1) = strProjekt
End With
cboFuellen
End If
End If
End Sub



Private Sub UserForm_Initialize()
cboFuellen
End Sub



Private Sub cboFuellen()
ComboBox1.RowSource = ""
With ThisWorkbook.Worksheets(1)
ComboBox1.RowSource = .Range(.Range("B1"), .Range("B1").End(xlDown)).Address
End With
End Sub


Schreib mal in Tabelle1 Zelle B1 Neues Projekt hinein und lasse den Code dann arbeiten, dann wirds klar.
Gruß
Roland Hochhäuser

Bild

Betrifft: AW: ComboBox
von: Peter R
Geschrieben am: 06.08.2008 19:52:05
Hallo Roland,
erstmal vielen Dank.
Funktioniert einwandfrei.
Jetzt wird das Neue Projekt zu der Liste hinzugefügt.
Die anfänglich Aufgabenstellung war etwas anders, was aber ja so nicht funktioniert hatte, und deswegen hatte ich es jetzt über einen Umweg probiert und hätte die neuen Projekte halt jedesmal in die entsprechende Datei manuell eingetragen. Aber so ist es natürlich viel besser!!!!!! :-)
Aber den zweiten Punkt habe ich damit leider noch nicht gelöst. Wie kann ich jetzt die einzelnen Projekte direkt über case ansprechen um eine weitere Aktion auszuführen?
Ich kann ja keinen direkten Namen hinterlegen. Also müsste ich die Auswahl der Box an eine Variable übergeben und die dann über Case aufrufen. Ist das so richtig gedacht?
Bin noch ziemlich am Anfang von VBA und hole mir meist Lösungen, die ich dann meinen Bedürfnissen anpasse. Das klappt auch alles. Vielleicht sollte ich doch mal nen Kurs dafür besuchen um es von Pike auf zu lernen. Hast Du da evtl. auch noch nen Tip?
Gruß
Peter

Bild

Betrifft: AW: ComboBox
von: Roland Hochhäuser

Geschrieben am: 07.08.2008 09:49:57
Moin Peter,
die jeweils aktuelle Anzeige (Wert) der Combobox kannst du mit Combobox.value ermitteln und dann deinem Ansatz entsprechend weiter verzweigen, also case "Auftragskennzahlen für EK bearbeiten" - Userform2.Show (ohne Call). Wenn Du es allgemeiner machen möchtest, gehst Du am besten über ComboBox1.ListIndex (spätestens das führt aber zur Notwendigkeit einer Fehlerbehandlung). Für den Anfang hast Du Dir mit mehreren Userformen / Steuerelementen einen schweren Brocken vorgenommen.
Aber um hier mal weiter zu kommen: Was funktioniert denn nicht ?
Gruß
Roland Hochhäuser
PS: Lehrgänge / Kurse zu Softwarethemen gibt es m.W. genügend, insbesondere Excel-VBA-Einsteiger werden eigentlich gut bedient. Das praktische Problem ist (neben dem Loseisen der Teilnahmekosten beim Arbeitgeber als Fortbildungsmaßnahme) festzustellen, ob der angebotene Kurs überhaupt stattfindet. In Berlin z.B. gibt es ein Überangebot / verknappte Nachfrage (je nach Sichtweise), was im Ergebnis zu Verlegungen / Verkürzungen des Kurses bei wenigen Teilnehmern führt / führen muss und dann "wird´s heftig" und man weiß anschließend, was man getan hat.

Bild

Betrifft: AW: ComboBox
von: Peter R
Geschrieben am: 07.08.2008 11:07:40
Hallo Roland,
vielen Dank für Deine Auskünfte. Hab gestern (heute) noch bis 2 Uhr rumprobiert (learning by doing) und bis jetzt folgende Programmierung erstellt. Bin von den drei einzelnen ufs abgewandert zu einer mit drei cbs.
Das mit dem .value fiel mir dann gestern auch noch ein.
Kannst Dir ja meine bisherigen Code ja mal anschauen:


Private Sub ComboBox1_Change()
Dim strAufgabe As String
If ComboBox1.Value = "Neue Aufgabe" Then
strAufgabe = InputBox("Name der neuen Aufgabe eingeben", "Aufgabe hinzufügen")
If Len(strAufgabe) > 0 Then
With ThisWorkbook.Worksheets(1)
.Range("B" & .Range("B1").End(xlDown).Row + 1) = strAufgabe
End With
cbo1Fuellen
End If
End If
End Sub



Private Sub ComboBox2_Change()
Dim strAufgabe As String
If ComboBox2.Value = "Neues Projekt" Then
strProjekt = InputBox("Name des neuen Projekts eingeben", "Projekt hinzufügen")
If Len(strProjekt) > 0 Then
With ThisWorkbook.Worksheets(1)
.Range("A" & .Range("A1").End(xlDown).Row + 1) = strProjekt
End With
cbo2Fuellen
End If
End If
End Sub



Private Sub ComboBox3_Change()
cbo3Fuellen
End Sub



Private Sub CommandButton1_Click()
Unload Aufgaben
Dim cb1 As String
Dim cb2 As String
Dim cb3 As String
cb1 = ComboBox1.Value
cb2 = ComboBox2.Value
cb3 = ComboBox3.Value
Call cb1    'Hier kommt die Fehlermeldung:"sub, function oder property erwartet"
'Das Makro für den Wert in cb1 gibt es aber
'HIER WEIß ICH NICHT WEITER!!!!!!!
'VON HIER AUS MUSS ICH VERZWEIGEN!!!!
'MsgBox cb1 & cb2 & cb3 'Ist nur ein Versuch, ob die Values übergeben werden!!! Und das  _
funktioniert
einwandfrei!!!
End Sub



Private Sub CommandButton2_Click()
Unload Aufgaben
End Sub



Private Sub UserForm_Initialize()
cbo1Fuellen
cbo2Fuellen
cbo3Fuellen
End Sub



Private Sub cbo1Fuellen()
ComboBox1.RowSource = ""
With ThisWorkbook.Worksheets(1)
ComboBox1.RowSource = .Range(.Range("B1"), .Range("B1").End(xlDown)).Address
End With
End Sub



Private Sub cbo2Fuellen()
ComboBox2.RowSource = ""
With ThisWorkbook.Worksheets(1)
ComboBox2.RowSource = .Range(.Range("A1"), .Range("A1").End(xlDown)).Address
End With
End Sub



Private Sub cbo3Fuellen()
ComboBox3.RowSource = ""
With ThisWorkbook.Worksheets(1)
ComboBox3.RowSource = .Range(.Range("c1"), .Range("c1").End(xlDown)).Address
End With
End Sub


Hab auch mal die Datei angehängt.
https://www.herber.de/bbs/user/54400.xls
Problem ist jetzt noch, dass aufgrund der CB.Values ein bestimmtes Makro aufgerufen werden soll. In diesem Makro möchte ich aber die CB.Values weiter nutzen. Ist das überhaupt möglich?
Da ich ja nicht weiß, was im Laufe des Jahres an Projekten und Aufgaben hinzukommt, kann ich nicht mit direkten "Wörtern" bei Case arbeiten.
Es gibt halt schon Programmierungen, die ich vorher erstellt habe, die für sich über Makros auch einwandfrei funktionieren, aber ich wollte nicht so viele Schaltflächen in meiner Symbolleiste haben und halt alles etwas vereinfachen durch ne CB. Damit hätten es meine Vertretungen, wenn ich im Urlaub bin auch um einiges einfacher, weil die sich nicht so viele einzelnen Schritte merken müssten.
Vielen Dank auch für Deine Hinweise zu Schulungen. Komme aus Braunschweig und möchte halt nicht auf irgendwelche windigen Leute reinfallen. Kann man es sich auch mit einen Kaufkurs selbst beibringen? Kannst Du da was empfehlen? Die Kosten würde ich selbst übernehmen, wenn die Fa. nichts zuzahlt.
Gruß
Peter

Bild

Betrifft: AW: ComboBox
von: Peter R

Geschrieben am: 07.08.2008 11:53:28
Hallo Roland,
hab vergessen die Frage offen zu halten.
Habs inzwischen hingekriegt, die richtigen Makros aufzurufen.
Musste nur die Variablen der cbs public deklarieren und schon funktionierts. Wie gesagt: LEARNING BY DOING :-)
Muß jetzt halt noch ein wenig rumprobieren, aber das Grundgerüst steht erstmal.
Vielen lieben Dank für Deine Hilfe und Ausführungen. Erst die haben mich mit viel suchen (wegen den anderen Kleinigkeiten :-) ) auf den richtigen Weg gebracht.
Gruß
Peter

Bild

Betrifft: AW: ComboBox
von: Roland Hochhäuser
Geschrieben am: 07.08.2008 12:17:48
Hallo Peter,
die Fehlermeldung kommt, weil Call eben eine Prozedur etc. erwartet, Cb1, cb2 usw. aber als lokale Variable deklariert sind. Wenn Du Prozeduren aufrufen willst, müsstest Du schreiben Call Prozedurname oder eben nur Prozedurname (z.B. Call CommandButton2_Click oder einfach nur CommandButton2_Click).
Gruß
Roland Hochhäuser

 Bild

Excel-Beispiele zum Thema "ComboBox"

ComboBox als Symbol download Alle ComboBoxes auf Position 1 download
Werte in eine ComboBox einer UserForm übernehmen download ComboBox in Abhängigkeit einer 2. ComboBox ein-/ausblenden download
ComboBox mit Monatsnamen füllen download Mehrspaltige ComboBox download
ComboBox2 in Abhängigkeit von ComboBox1 bestücken download Nur Zellen mit Inhalt in ComboBox listen download
Neue UserForm bedingt nach ComboBox-Auswahl aufrufen download Neues Element in ComboBox download
Werteübernahme gem. Auswahl in ComboBox - ohne VBA download Blätter in ComboBox-Feld einlesen und auswählen download
Wert in einer CommandBarComboBox verändern download ComboBox-Felder in UserForm aufklappen download
UserForm-ComboBox-Feld nach Tasteneingabe aufklappen download Wert aus 2. UserForm-ComboBox-Spalte berechnen download
In einer ComboBox selektiertes Arbeitsblatt auswählen download ComboBox in Abhängigkeit von einer CheckBox anzeigen download
Adressfeld aus UserForm-ComboBox füllen download Tages-ComboBox einer UserForm an den ausgewählten Monat anpassen download
UserForm mit ComboBoxes durch VBA-Code erstellen download ComboBoxes per VBA-Code in Tabellenblatt erzeugen download
ComboBox für Monatsblattauswahl in Menüleiste einfügen download Wert aus ComboBox in Tabelle eintragen download
TextBox in Abhängigkeit einer ComboBox-Auswahl füllen download Symbolleiste mit ComboBox erstellen download
Werte in UserForm-ComboBox einlesen und ausgeben download Ein- und ausblenden von Blättern gem. UserForm-ComboBoxes download
Nach Tabellenblatt-ComboBox den vorher selektierte Bereich wählen download Werte aus UserForm-ComboBox suchen und Fundstelle kopieren download
Bei einer mehrspaltigen ComboBox Wert aus Spalte 2 als Startwert download UserForm-ComboBoxes als Collection-Objekte ansprechen download
Eintrag eines UserForm-ComboBox-Wertes in aktive Zelle download Zweidimensionales Array an UserForm-ComboBox übergeben download
In Abhängigkeit einer ComboBox-Auswahl eine ListBox füllen download Wert aus ComboBox in TextBox, dann in Tabelle suchen download
Summe aller Werte gem. ComboBox-Eintrag download Geöffete Arbeitsmappen in Menü-ComboBox listen download
Tabelle nach ComboBox-Auswahl durchsuchen download Blattauswahl über eine UserForm-ComboBox download
Dateinamen in UserForm-ComboBox einlesen und Datei öffnen download Doppelt vorkommende Werte in einer UserForm-Combobox listen download
Selektieren von über ComboBox-Felder ausgewählten Werten download Nach Artikelauswahl in ComboBox Preis ermitteln download
Wert in ComboBox einlesen, suchen, editieren, ausgeben download Liste ohne Doppelte Werte in ComboBox einlesen download
ComboBox-Breiten während der Laufzeit festlegen download Im TextFeld einer UserForm-ComboBox Wert aus 2 Spalten anzeigen download
Bei Aktivieren eines Arbeitsblattes ComboBox neu einlesen download Beim Öffnen der Arbeitsmappe Menü-ComboBoxes anlegen download