SonyUserforum

SonyUserforum (https://www.sonyuserforum.de/forum/index.php)
-   Café d`Image (https://www.sonyuserforum.de/forum/forumdisplay.php?f=94)
-   -   Hilfe zur Abfrage einer ComboBox in Excel benötigt (https://www.sonyuserforum.de/forum/showthread.php?t=31285)

Hellraider 16.09.2006 19:31

Hilfe zur Abfrage einer ComboBox in Excel benötigt
 
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:

Code:

 
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.

Code:

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/4im...oxabfragen.jpg

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.

Code:

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

Zitat:

Zitat von ManfredK
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

Zitat:

Zitat von Hellraider
Zitat:

Zitat von ManfredK
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

Zitat:

Zitat von ManfredK
Zitat:

Zitat von Hellraider
Zitat:

Zitat von ManfredK
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

Zitat:

Zitat von Hellraider
Zitat:

Zitat von ManfredK
Zitat:

Zitat von Hellraider
Zitat:

Zitat von ManfredK
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

Zitat:

Zitat von Hellraider
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:


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:45 Uhr.