Kombinationsfeld in Excel

Hallo,

ich würde gerne in Excel eine Kombinationsfeld einfügen und dieses mit VBA so programmieren, dass es verschiedene Einträge anzeigt. Bisher bin ich so vorgegangen, dass ich über „Entwicklertools“ -> „Einfügen“ -> „Kombinationsfeld“ ein solches auf die Arbeitsmappenoberfläche gezogen habe. Um die Einträge zu programmieren habe ich versucht über „Code anzeigen“ im Menü und dann über .additem „Eintrag1“ Einträge hinzuzufügen. Schon hier komme ich aber nicht weiter, da die Einträge nicht angezeigt werden. Der Code sieht bis dahin folgendermaßen aus, wobei von mir nur die „.additem-Befehle“ hinzugefügt wurden:

Sub Dropdown1_BeiÄnderung()
Dropdown1.AddItem „Kohlenstoffstahl“
Dropdown1.AddItem „Edelstahl“
End Sub

Irgendwie kommt mir aber schon die erste Zeile, die automatisch generiert wurde, seltsam vor… Was mache ich falsch?

Wenn ich schonmal dabei bin… wie kann ich in VBA auf den ausgewählten Eintrag zugreifen? Also wenn ich z.B. Edelstahl auswähle, kann ich diese Auswahl in einer Variable speichern und in einer if-Abfrage verwenden?

Ich freue mich über jede Antwort :smile:

Gruß
Chris

Moin, Chris,

Sub Dropdown1_BeiÄnderung()
Dropdown1.AddItem „Kohlenstoffstahl“
Dropdown1.AddItem „Edelstahl“
End Sub

AddItem gehört nicht ins Ereignis Dropdown1_BeiÄnderung, sondern in Worksheet.Aktivate.

Irgendwie kommt mir aber schon die erste Zeile, die
automatisch generiert wurde, seltsam vor…

Mal nach oben schauen, dort lassen sich Elemente des Blattes und zugehörige Ereignisse aufklappen.

kann ich diese Auswahl in einer Variable speichern

wozu?

und in einer if-Abfrage verwenden?

if dropdown1.Value = irchenzwass
end if

Gruß Ralf

Also oben wird mir auch nur worksheet angezeigt… müsste da nicht auch combobox oder sowas stehen, nachdem ich das Kombinationsfeld schon auf das Tabellenblatt gezogen habe?
Ich habe mal als Ereignis Aktivate ausgewählt, so dass der Code folgendermaßen aussieht:

Private Sub Worksheet_Activate()
Dropdown1.AddItem „Kohlenstoffstahl“
Dropdown1.AddItem „Edelstahl“
End Sub

So klappt es natürlich noch nicht, nur ist mit immernoch nicht klar, wie ich es richtig eingeben soll.

Gruß
Chris

Hi Chris,

Also oben wird mir auch nur worksheet angezeigt…

Feld aufklappen!

müsste da
nicht auch combobox oder sowas stehen, nachdem ich das
Kombinationsfeld schon auf das Tabellenblatt gezogen habe?

nö, nur der Name der combobox - ich dachte, die hieße Dropdown1. Bei mir heißen die Combobox1 usw.

Gruß Ralf

Hi Ralf,

Ich klappe oben die Auswahl ja auf und dort wird wie gesagt nur (Allgemein) und Worksheet angezeigt, sonst gar nichts… mich wundert selber, dass Excel diese Zeilen mit Sub Dropdown1_BeiÄnderung() generiert, obwohl nichts von Dropdown1 oder sonst was in dem Ausklappmenü oben steht. Erkennt er das Kombinationsfeld vielleicht noch nicht, obwohl ich es doch auf das Tabellenblatt gezogen habe?

Gruß Chris

Ich klappe oben die Auswahl ja auf und dort wird wie gesagt
nur (Allgemein) und Worksheet angezeigt, sonst gar nichts…
mich wundert selber, dass Excel diese Zeilen mit Sub
Dropdown1_BeiÄnderung() generiert, obwohl nichts von Dropdown1
oder sonst was in dem Ausklappmenü oben steht. Erkennt er das
Kombinationsfeld vielleicht noch nicht, obwohl ich es doch auf
das Tabellenblatt gezogen habe?

Hallo Chris,

du hast ein Kombinatinsfeld aus Symbolleiste Formular.
Ralf spricht von einem Kombinationsfeld aus Steuerelementtooöbox.

Und gib deine Version an, dann kann man vielleicht herausfinden was du mit Entwicklertools meintest.
BS ist Win?

Und da wo man oben Worksheet auswählen kann gehört dein Makro nicht hin, es gehört in ein Standardmodul Modul1 usw.

Mst, jetzt hab ich vergessen was die Ausgangsfrage ist, naja, schaue ich halt.

Gruß
Reinhard

Hallo Chris,

ich würde gerne in Excel eine Kombinationsfeld einfügen und
dieses mit VBA so programmieren, dass es verschiedene Einträge
anzeigt.

kannste manuell machen, Rechtsklick drauf, Steuerelement formatieren, Steuererung, Eingabebereich, Zellbereich festlegen.

Per Vba:

with ActiveSheet.Shapes("Drop Down 1")
 .ListFillRange = "A1:A6"
 .LinkedCell = ""
 .DropDownLines = 8
 .Display3DShading = False
End With

Wenn ich schonmal dabei bin… wie kann ich in VBA auf den
ausgewählten Eintrag zugreifen? Also wenn ich z.B. Edelstahl
auswähle, kann ich diese Auswahl in einer Variable speichern
und in einer if-Abfrage verwenden?

Nimm das Kombinationsfeld aus ActiveX-Steuerelemente.
das kannst du auch manuell mit einem Zellbereich befüllen oder per Vba:

in einem Standardmodul:

Sub Laden()
With Worksheets("Tabelle1").ComboBox1
 .AddItem "Alu"
 .AddItem "Eisen"
 .AddItem "Blei"
End With
End Sub

Im Blattmodul:

Private Sub ComboBox1\_Change()
If ComboBox1.Value = "Eisen" Then
 MsgBox "Ferrum"
Else
 MsgBox "schrott"
End If
End Sub

Gruß
Reinhard

Hallo Reinhard,

also ich habe Excel 2007, da läuft alles was zu VBA und Makros gehört über das Menü „Entwicklertools“. BS ist Win 7.

Die Ausgangsfrage war, wie ich Einträge in meine Kombobox programmieren kann und dazu wo ich diese überhaupt in meinem VBA Modul finde… da sie ja nicht in dem Auswahlmenü auftaucht.

Gruß Chris

also ich habe Excel 2007, da läuft alles was zu VBA und Makros
gehört über das Menü „Entwicklertools“. BS ist Win 7.

Die Ausgangsfrage war, wie ich Einträge in meine Kombobox
programmieren kann und dazu wo ich diese überhaupt in meinem
VBA Modul finde… da sie ja nicht in dem Auswahlmenü
auftaucht.

Hallo Chris,

in meiner anderen Antwort steht doch alles drin.

Gruß
Reinhard

Hallo Reinhard,

sorry ich kenne mich (offensichtlich) noch nicht so gut mit VBA aus… mein Problem ist, dass ich immernoch nicht weiß, was ich genau schreiben muss um die Einträge in der Combobox anzeigen zu lassen. Dass ich den Code in ein Standardmodul schreiben soll verstehe ich, aber was genau?

Generell scheint man ja Einträge über ‚Comboboxname‘.additem „Eintrag1“ programmieren zu können… aber in welches Sub schreibe ich das rein? Wenn ich sie in das von VBA vorgegebene Sub Dropdown1_BeiÄnderung() reinschreibe, passiert jedenfalls nichts :frowning:

Gruß Chris

Hallo Christian,

sorry ich kenne mich (offensichtlich) noch nicht so gut mit
VBA aus…

kein problem, so fing ich auch mal an :smile:

mein Problem ist, dass ich immernoch nicht weiß,
was ich genau schreiben muss um die Einträge in der Combobox
anzeigen zu lassen. Dass ich den Code in ein Standardmodul
schreiben soll verstehe ich, aber was genau?

Es gibt bei deinem Weg, Entwicklertools–Einfügen zwei Kombinationsfelder die du einfügen kannst, sie sind unterschiedlich zu behandeln.

Du hast das aus Formular gewählt, da geht kein AddItem *glaub*
Da mußt du wie von mir gesagt so vorgehen:

************************************************************************
kannste manuell machen, Rechtsklick drauf, Steuerelement formatieren, Steuererung, Eingabebereich, Zellbereich festlegen.

Per Vba:

with ActiveSheet.Shapes(„Drop Down 1“)
.ListFillRange = „A1:A6“
.LinkedCell = „“
.DropDownLines = 8
.Display3DShading = False
End With
************************************************************************

Generell scheint man ja Einträge über ‚Comboboxname‘.additem
„Eintrag1“ programmieren zu können…

Nein, nur bei bestimmten Steuerelementen, bei deinem nicht.

aber in welches Sub
schreibe ich das rein? Wenn ich sie in das von VBA vorgegebene
Sub Dropdown1_BeiÄnderung() reinschreibe, passiert jedenfalls
nichts :frowning:

Sub Dropdown1_BeiÄnderung()
bedeutet rein gar nix, kannste jeden beliebigen Namen nehmen.
Ist nur ein namensvorschlag von Excel ohne jedwede Bedeutung, ist eine Sub wie jede andere normale Sub.

Mache es wie von mir angeraten, nimm das andere Kombinationsfeld, dann das was ich als Code zeigte.

Gruß
Reinhard

Gruß Chris

Oje, ich muss zugeben, dass ich in meiner Schusseligkeit deinen ersten Beitrag überlesen habe… jetzt verstehe ich auch was du meintest als du von dem schon Beantwortetem geschrieben hast.

Also, die Combobox funktioniert jetzt endlich mit Einträgen *yeah*. Ich habe die ActivX Variante gewählt. Jetzt gibts nur noch 2 Kleinigkeiten…

1.) Wie beschränke ich die Listeneinträge auf 2? Momentan werden mir 9 mal meine beiden Einträge wiederholt angezeigt.

2.) Das mit der if-Abfrage sieht gut aus… nur möchte ich sie in einer anderen Funktion aufrufen. Wenn ich dort Combofeld1.Value eingebe wird dort natürlich nicht der Eintrag erkannt. Wie kann ich in der Funktion auf die Combobox zugreifen?

Vielen Dank schonmal für die ganze Mühe :smile:

Gruß
Chris

Hallo Christian,

machen wir es bitte so, das sind ja jetzt neue Probleme Herausforderungen, mach damit eine neue Frage auf.

Okay, bin eine faule Socke :smile:, hab keine Lust diese Beitragsfolge neu einzulesen um zu wissen um was es ging. Bedenke bitte, inzwischen habe ich schon hier in anderen Brettern und in anderen Foren völlig andere Probleme versucht zu lösen, deshalb k.A. mehr um was es bei deiner ging.

Gruß
Reinhard