PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe zur Abfrage einer ComboBox in Excel benötigt


Hellraider
16.09.2006, 19:31
Ich möchte in Excel 2003 folgendes bewerkstelligen.

Es soll im Tabellenblatt "Tabelle1" ein Kombinationsfeld mit mehreren Auswahlmöglichkeiten angelegt werden, nennen wir sie hier mal AAA,BBB,CCC,DDD und EEE. Diese Inhalte werden aus einem anderen Tabellenblatt als "Eingabebereich" übernommen. Das hat soweit schonmal geklappt :)

Je nach Auswahl sollen dann zwei unterschiedliche Makros ausgeführt werden. Diese sind auch schon wie folgt erstellt worden:


Sub Makro2()

Range("B19:D19").Select
With Selection.Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Selection.Locked = False
Selection.FormulaHidden = False
Range("B19").Select
ActiveCell.FormulaR1C1 = "DU"
Range("B19").Select

End Sub


Dieses Makro 2 soll bei der Auswahl von CCC, DDD oder EEE ausgeführt werden und soll den Zellbereich B19:D19 "entsperren", mit gelber Farbe hinterlegen und in Zelle B19 den Eintrag "DU" vornehmen. Das Makro klappt auch schon.

Mit dem nächsten Makro3 soll bei der Auswahl AAA oder BBB der Zellbereich wieder "gesperrt" werden und die Hintergrundfarbe als auch enthaltener Text wieder gelöscht werden. Auch das Makro klappt soweit schon.


Sub Makro3()

Range("B19:D19").Select
Selection.Interior.ColorIndex = xlNone
Selection.Locked = True
Selection.FormulaHidden = False
Selection.ClearContents
Range("B19").Select

End Sub



Das Problem was ich jetzt habe:

Wie weise ich dem Kombinationsfeld diese beiden Makros zu bzw. mit welcher Funktion kann ich die getätigte Auswahl (entweder den 1:1 Text oder die Position der Auswahl) des Kombinationsfeldes abfragen und dann eines der beiden Makros ausführen?

Irgendwie nach dem Motto: If Worksheets("Tabelle1").ComboBox1.value = 0 OR 1 Then Makro2() Else Makro3()

Irgendwie kann man doch auch bestimmt den Eintrag AAA in der ComboBox voreinstellen, nur wie?

Irgendwie nach dem Motto: ComboBox1.ListIndex = "0" aber wo genau muss das hin?

Siehe auch Screenshot:

http://www.d7userforum.de/phpBB2/4images/data/thumbnails/6/ExcelComboBoxabfragen.jpg (http://www.d7userforum.de/phpBB2/4images/details.php?image_id=31886)

ManfredK
16.09.2006, 19:53
Ich glaube die einfachste Möglichkeit ist:

Im Edit-Modus Doppelklick auf die ComboBox kannst du in Visual Basic die Bedingungen für das ausführen der Macros eingeben.

Private Sub ComboBox1_Change()

If Range("A1") = Range("B16") Then Macro2 Else Macro3

End Sub

Im Beispiel ist die Zelle A1 die LinkedCell und B16 bis Bxx ListFillRange

Ich hoffe das funzt...

Edit:
Wenn du willst, schicke ich dir das EXCEL-Sheet.

Hellraider
16.09.2006, 20:16
Im Beispiel ist die Zelle A1 die LinkedCell und B16 bis Bxx ListFillRange

Wie genau kann ich das jetzt verstehen? *aufdemSchlauchsteht* :oops:

EDIT: Wenn ich Entwurfsmodus doppelt auf die Combobox klicke kommt bei mir nur das Eigenschaftsfeld und keine Möglichkeit irgendwo Code zu ändern.

Wenn ich die combobox anwähle und dann in der Steuerelemete-Toolbox auf "Code anzeigen" klicken, bin ich zwar in VisualBaisc drin, aber da finde ich keinerlei Einträge zur Combobox :roll:

ManfredK
16.09.2006, 20:20
Im Beispiel ist die Zelle A1 die LinkedCell und B16 bis Bxx ListFillRange

Wie genau kann ich das jetzt verstehen? *aufdemSchlauchsteht* :oops:
Wenn du im Entwurfmodus die ComboBox aktivierst, kannst du in den Eigenschaften die LinkedCell und die ListFillRange einstellen.

Hellraider
16.09.2006, 20:33
Im Beispiel ist die Zelle A1 die LinkedCell und B16 bis Bxx ListFillRange

Wie genau kann ich das jetzt verstehen? *aufdemSchlauchsteht* :oops:
Wenn du im Entwurfmodus die ComboBox aktivierst, kannst du in den Eigenschaften die LinkedCell und die ListFillRange einstellen.

Also bei mir habe ich keine derartige Möglichkeit (oder ich bin im falschen Film) :roll:

ManfredK
16.09.2006, 20:38
Im Beispiel ist die Zelle A1 die LinkedCell und B16 bis Bxx ListFillRange

Wie genau kann ich das jetzt verstehen? *aufdemSchlauchsteht* :oops:
Wenn du im Entwurfmodus die ComboBox aktivierst, kannst du in den Eigenschaften die LinkedCell und die ListFillRange einstellen.

Also bei mir habe ich keine derartige Möglichkeit (oder ich bin im falschen Film) :roll:
Mit Rechtsklick auf die ComboBox (im Entwurfsmodus), kanns du im Kontextmenü auswählen.

Unter 'Eigenschaften' LinkedCell und ListFillRange einstellen
Unter 'Code anzeigen' die Bedingung für die Macros (siehe E-Mail oder weiter oben) eingeben.

Und dann sollte es gehen.

Hellraider
16.09.2006, 20:46
Danke für die Datei.

Irgendwas ist da bei mir wohl beim anlegen der Combibox schief gelaufen (als welchen Gründen auch immer). Ich werde mir das jetzt mal genauer an deiner Datei angucken :)

Hellraider
16.09.2006, 20:53
Ah, jetzt ja :D

Kannst du mir auch noch einen Tip geben, wie ich das auch ohne die Range-Abfrage bewerkstelligen kann, da ich dafür noch ein extra Feld zum Vergleichen anlegen müsste. Wenn man den Wert mit ComboBox1.value abfragen würde, könnte man sich das zusätzliche Feld zum Vergleichen nämlich auch noch sparen. Und eventuell noch einen Tip, wie ich aus der Kombibox schon einen festen Menüpunkt voreinstellen kann.

ManfredK
16.09.2006, 22:57
Wenn man den Wert mit ComboBox1.value abfragen würde, könnte man sich das zusätzliche Feld zum Vergleichen nämlich auch noch sparen. Und eventuell noch einen Tip, wie ich aus der Kombibox schon einen festen Menüpunkt voreinstellen kann.
Ich werde mich morgen noch einmal schlau machen. Heute bin ich schon zu müde :).

Hellraider
16.09.2006, 23:26
Super, danke dir :top: :top: :top:

Hellraider
17.09.2006, 10:18
Hallo,

das mit der ComboBox.Value abfragen habe ich mittlerweile schon hinbekommen:


Private Sub ComboBox1_Change()

If ComboBox1.Value = "AAA" Then Makro1 Else If ComboBox1.Value = "BBB" Then Makro2 Else Makro3

End Sub


Ich weiß jetzt auch schon wo ich gestern den Fehler drin hatte :roll:
Ich hatte zwar ein Kombinationsfeld angelegt, aber das habe ich aus dem Menü "Formular" gemacht und nicht wie es richtig gewesen wäre aus dem Menü "Steuerelement-Toolbox". Man lernt halt nie aus :)

Jetzt bleibt nur noch das Problem mit der Voreinstellung eines Wertes für das Kombinationsfeld. Mal schauen, ob ich das hinbekomme. Für Tips bin ich natürlich immer dankbar :cool:

Hellraider
17.09.2006, 11:32
So, habe auch das hinbekommen :cool:

War relativ einfach *g*

Man musste nur bevor man das ganze abspeichert Value auf den gewünschten Wert setzen :lol: