PDA

Vollständige Version anzeigen : ComboBox in Abhängikeit zu einer weiteren stellen


mercato
04.05.2009, 17:18
Aloa...

Also: alles in einem Sheet! ComboBox1 wird mit Workbook.Open automatisch mit den Daten aus Range (A100:A160) befüllt. Meine Wahl wird dann schließlich nach B11 ausgegeben. Genau diese Auswahl soll dann das Befüllen der ComboBox2 bewirken, mit den speziell für meine Auswahl hinterlegten Werten.

Bsp: Wähle in Box1 otto -> in Box2 soll darauf Range (B100:B110) angezeigt und wählbar werden. Wähle ich in Box1 anna -> in Box2 soll Range (B111:B120) angezeigt und wählbar werden

bisheriger Versuch:
If Sheets("Tabelle1").Range("B11").Value = "otto" Then
Sheets("Tabelle1").ComboBox2.List = Range("B100:B110").Value


ElseIf Sheets("Tabelle1").Range("B11").Value = "anna" Then
Sheets("Tabelle1").ComboBox2.List = Range("B111:B120").Value

End If


Aber da passiert nix, weil ja ComboBox2 auch nicht mit in Workbook.Open stehen kann, da sie ja erst auf die Wahl in Box1 reagieren soll. Welches Sub muss ich da nehmen, bzw. wohin muss das geschrieben werden!? Ist die If-Then-Else überhaupt sinnvoll? Oder geht das noch kürzer, weil bei 60 Namen wird das recht viel an If-Then-Else

Danke schonmal :)

jinx
04.05.2009, 17:28
Moin, mercato,

entweder das ComboBox1_Change oder aber das Worksheet_Change-Ereignis für die verlinkte Zelle, beide hinter der Tabelle, auf der sich die CB bzw. die Ausgabezelle befinden. Reicht das als Anschubser? ;)

mercato
04.05.2009, 17:47
ahaa...der Schubser war produktiv :) habe das jetzt in die Sub_Change der Box1 gesetzt und es funktioniert...

Dann jetzt die Feinheiten :rolleyes:

wenn ich in Box1 und Box2 jeweils etwas gewählt habe und mir dann in Box1 wieder etwas neues aussuchen möchte, bleibt in Box2 zunächst das vom vorhergehenden stehen (in dem Fenster der DropDown Auswahl)...kann man das noch irgendwie abstellen?

jinx
04.05.2009, 18:00
Moin, mercato,

z.B. bei CB1 das Enter-Ereignis nutzen und dabei den Inhalt von CB2 löschen - aber nur, wenn eine strikte lineare Abhängigkeit von CB1 (Ausgangswert, nur dieser sorgt bei CB2 für Inhalt) zu CB2 besteht...

mercato
05.05.2009, 14:43
genau darum geht es...die Auswahl CB1 soll entsprechende Daten in CB2 wählbar machen...wie müsste die .Enter denn aussehen? Denn .clear funktioniert in der Enter-Anweisung nicht!? Hat das etwas mit dem Focus zu tun?

In den Eigenschaften hab ich auch schon versucht die EnterField umzustellen, brachte auch nix.

jinx
05.05.2009, 16:19
Moin, mercato,

falsches Ereignis - shame over me... :boah:

Private Sub ComboBox1_Change()
If ComboBox1.Text = "Januar" Then
Sheets("Tabelle1").ComboBox2.List = Range("B1:B7").Value
Else
Sheets("Tabelle1").ComboBox2.List = Range("IB1:IB7").Value
End If
End Sub
<hr>
Private Sub ComboBox1_GotFocus()
With Sheets("Tabelle1").ComboBox2
.List = Range("IB1:IB7").Value
.Value = vbNullString
End With
End Sub
<hr>
Private Sub Worksheet_Activate()
ActiveSheet.ComboBox1.List = Range("A1:A12").Value
End Sub

mercato
06.05.2009, 14:40
yeah :top: ...Vielen Dank! Hab mir ein paar Zeilen aus deinen Vorschlägen angepasst und schon läuft das ganze so wie ich es will!!! Ein Traum :grins:

Option Explicit...

Private Sub CB1_change
(mit vielen If-Then-Else-Anweisungen, nicht sonderlich elegant aber es läuft :cool: )
End Sub

Private Sub CB1_GotFocus
dein NullString
End Sub

_____
wenn ich den Laufzeitfehler durch einen fehlenden Eintrag in der CB2 mit einer MsgBox ersetzen will...:rolleyes:

Sub Error (diverse Integer)
On Error GoTo Error

Select Case
Case Is = " '-214xxxx (xxxx)' " ->ist eben kein normaler Fehler wie 382 oder so...

usw. -> kann das mit so einem seltsamen Case überhaupt funktionieren? Weil dennoch der Laufzeitfehler statt meiner MsgBox gezeigt wird...

jinx
06.05.2009, 16:01
Moin, mercato,

wenn in der Mappe keine vertraulichen Daten sind, könntest Du sie bitte einstellen (evtl. gepackt üals ZIP oder RAR) oder per Mail an mich senden (jinx(at)ms-office-forum.net) - momentan kann ich den Fehler nicht nachvollziehen...

P.S.: eine Angabe der verwendeten Version wäre nett.

mercato
12.05.2009, 17:36
aloa...so, habe wieder bissl Luft und kann mich mit dem Error beschäftigen :) kann das leider nicht versenden, weil Firmendaten und Datenschutz...you know :rolleyes:
aber vielleicht kannst du trotzdem helfen...

(office07)

Auswahl CB1 und CB2 u.a. bilden den Namen für eine "".mdb, welche mit Recordset importiert wird...ist die .mdb nicht vorhanden, kommt Laufzeitfehler: "-2147467259 (80004005)" blabla kein zulässiger Pfad, stellen Sie sicher bla...

Aber irgendwie schaff ich es nicht diese Meldung abzufangen und durch eine einfache MsgBox zu ersetzen...

MfG