| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: mehrere ComboBox´en verändern (1301 mal gelesen)
|
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 17. Feb. 2004 07:48 <-- editieren / zitieren --> Unities abgeben:
Schönen guten Morgen. kann man eigentlich den Inhalt von einer ComboBox ändern lassen, wenn eine ander geändert wird. Ich benutze zum füllen meiner ComboBox´en folgenden Code: Private Sub UserForm_Initialize() Dim Projekt As String, Projektverz As String, Projektedatei As String, Zeichnungen As String, Projektnummer As String, Proj As Integer Dim Kunde As String, Projektbezeichnung As String, Trennung As Integer, Trennung2 As Integer, Zerlegen As String, Zerlegen2 As String Open "D:\Bjoern Server\Acad Einstellungen\Einstellungen.txt" For Input As #1 ' Datei zum Einlesen öffnen. Do While Not EOF(1) Input #1, Projekteverz, Projektedatei, Zeichverzeich, benutzereinstellungen Loop Close #1 ' Datei schließen. Open Projektedatei For Output As #2 Projekt = Dir(Projekteverz, vbDirectory) Do While Projekt <> "" If Projekt <> "." And Projekt <> ".." And Projekt <> "Acad Einstellungen" Then If (GetAttr(Projekteverz & Projekt) And vbDirectory) = vbDirectory Then Print #2, Projekt Zerlegen = Projekt Zerlegen = Trim(Zerlegen) Trennung = InStr(1, Zerlegen, "-", vbTextCompare) Projektnummer = Left(Zerlegen, Trennung - 1) Zerlegen2 = Right(Zerlegen, Len(Zerlegen) - Trennung) Zerlegen2 = Trim(Zerlegen2) Trennung2 = InStr(1, Zerlegen2, "-", vbTextCompare) Kunde = Left(Zerlegen2, Trennung2 - 1) Projektbezeichnung = Right(Zerlegen2, Len(Zerlegen2) - Trennung2) ComboBox1.AddItem Projektnummer Proj = Proj + 1 ComboBox1.Style = fmStyleDropDownList ComboBox1.ListIndex = 0 ComboBox2.AddItem Kunde ComboBox2.Style = fmStyleDropDownList ComboBox2.ListIndex = 0 ComboBox3.AddItem Projektbezeichnung ComboBox3.Style = fmStyleDropDownList ComboBox3.ListIndex = 0 End If ' um ein Verzeichnis handelt. End If Projekt = Dir ' Nächsten Eintrag abrufen. Loop Close #2 Dim Projektbeginn As Date Open benutzereinstellungen For Input As #3 Do While Not EOF(1) If benutzereinstellungen <> "" Then Else End If Input #3, Projektbeginn, Aufbaubeginn, Aufbauende, Veranstaltungsbeginn, Veranstaltungsende, Abbaubeginn, Abbauende Close #3 End If
End Sub^ Ich möchte nun, daß sich beim ändern einer ComboBox die anderen beiden auch ändern. Vielleicht ist das ganze viel zu einfach, wäre über ne antwort sehr dankbar. :-( [Diese Nachricht wurde von Dressler am 17. Feb. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 17. Feb. 2004 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
Hallo Dressler, wie wäre es, wenn Du deinen Code mal ordentlich formatierst, meinst Du das dort jemand durchsieht, oder sich die Arbeit macht, sich da durchzufummeln? Ja, man kann eine Box oder was auch immer in Abhängigkeit von einer anderen ändern. Kannst Du bitte etwas konkreter werden? Gruß TP
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 17. Feb. 2004 16:55 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
|
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 18. Feb. 2004 08:00 <-- editieren / zitieren --> Unities abgeben:
Hallo TP, Du hast ja recht mit dem ordentlich formatieren... Werde ich beim nächsten Mal auch machen. Mein Problem ist mittlerweile zumindest wie folgt: Private Sub UserForm_Initialize() ComboBox1.AddItem ("ComboBox1 - Eintrag1") 'ComboBox1 füllen ComboBox1.AddItem ("ComboBox1 - Eintrag2") 'ComboBox1 füllen ComboBox1.AddItem ("ComboBox1 - Eintrag3") 'ComboBox1 füllen ComboBox1.ListIndex = 0 'ComboBox1 ersten Eintrag anzeigen ComboBox2.AddItem ("ComboBox2 - Eintrag1") 'ComboBox2 füllen ComboBox2.AddItem ("ComboBox2 - Eintrag2") 'ComboBox2 füllen ComboBox2.AddItem ("ComboBox2 - Eintrag3") 'ComboBox2 füllen ComboBox2.ListIndex = 0 'ComboBox2 ersten Eintrag anzeigen ComboBox3.AddItem ("ComboBox3 - Eintrag1") 'ComboBox3 füllen ComboBox3.AddItem ("ComboBox3 - Eintrag2") 'ComboBox3 füllen ComboBox3.AddItem ("ComboBox3 - Eintrag3") 'ComboBox3 füllen ComboBox3.ListIndex = 0 'ComboBox3 ersten Eintrag anzeigen End Sub Private Sub ComboBox1_AfterUpdate() ComboBox2.ListIndex = ComboBox1.ListIndex 'ComboBox1 als Referenz für ComboBox2 setzen ComboBox3.ListIndex = ComboBox1.ListIndex 'ComboBox1 als Referenz für ComboBox2 setzen End Sub Private Sub ComboBox2_AfterUpdate() ComboBox1.ListIndex = ComboBox2.ListIndex 'ComboBox2 als Referenz für ComboBox2 setzen ComboBox3.ListIndex = ComboBox2.ListIndex 'ComboBox2 als Referenz für ComboBox2 setzen End Sub Private Sub ComboBox3_AfterUpdate() ComboBox1.ListIndex = ComboBox3.ListIndex 'ComboBox3 als Referenz für ComboBox2 setzen ComboBox2.ListIndex = ComboBox3.ListIndex 'ComboBox3 als Referenz für ComboBox2 setzen End Sub Private Sub ComboBox1_Change() ComboBox2.SetFocus ' hier nun der Versuch kurz zu ComboBox2 zu switchen ComboBox1.SetFocus ' und wieder zurück zu ComboBox1 End Sub Private Sub ComboBox2_Change() ComboBox1.SetFocus ' und sobald das drin steht klappt es nicht mehr :-( ComboBox2.SetFocus ' und sobald das drin steht klappt es nicht mehr :-( End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 18. Feb. 2004 08:05 <-- editieren / zitieren --> Unities abgeben:
Tja Harry, soweit so gut. Aber es soll halt möglichst nach dem verändern der einen ComboBox sofort auswirkung auf die anderen haben. Das funktioniert so leider bisher noch nicht. Gruß Dressler Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 18. Feb. 2004 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
Hallo Dressler, interessante Geschichte, aber wirklich weiterhelfen kann ich Dir nicht, aber ich kann vielleicht was zur Lösung beitragen. Wenn man in der Zeile, in der es den Laufzeitfehler gibt, einen Haltepunkt macht und in ...
Code:
Private Sub ComboBox2_Change() ComboBox1.SetFocus ' und sobald das drin steht klappt es nicht mehr :-(
... auch einen Haltepunkt, fällt auf, daß das Programm nicht mehr durch die Zeile, wo es erst einen Laufzeitfehler gibt, läuft und wenn man das Programm weiterlaufen lässt öffnet sich wie erwartet auch das Formular. ... aber wieso, weshalb, warum, weiß ich auch nicht, aber vielleicht jemand anderes. Hatte es noch mit einem Sleep versucht, aber auch keine Chance. Also sorry, ich muß an dieser Stelle passen, würde mich aber jetzt auch interessieren, woran es liegt. Gruß TP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 18. Feb. 2004 16:10 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
hi, wenn's das ist was Du brauchst bist Du mir ne Erklärung schuldig wofür das gut sein soll ;-), ich kann den Sinn zwar nicht erkennen aber ich lass mich immer von einer guten Idee inspirieren. Private Sub UserForm_Initialize() cb1Flag = False ComboBox1.AddItem ("ComboBox1 - Eintrag1") ComboBox1.AddItem ("ComboBox1 - Eintrag2") ComboBox1.AddItem ("ComboBox1 - Eintrag3") ComboBox1.ListIndex = 0 ComboBox2.AddItem ("ComboBox2 - Eintrag1") ComboBox2.AddItem ("ComboBox2 - Eintrag2") ComboBox2.AddItem ("ComboBox2 - Eintrag3") ComboBox2.ListIndex = 0 ComboBox3.AddItem ("ComboBox3 - Eintrag1") ComboBox3.AddItem ("ComboBox3 - Eintrag2") ComboBox3.AddItem ("ComboBox3 - Eintrag3") ComboBox3.ListIndex = 0 CboFlag = True End Sub Private Sub ComboBox1_AfterUpdate() If CboFlag Then ComboBox2.ListIndex = ComboBox1.ListIndex ComboBox3.ListIndex = ComboBox1.ListIndex End If End Sub Private Sub ComboBox2_AfterUpdate() If CboFlag Then ComboBox1.ListIndex = ComboBox2.ListIndex ComboBox3.ListIndex = ComboBox2.ListIndex End If End Sub Private Sub ComboBox3_AfterUpdate() If CboFlag Then ComboBox1.ListIndex = ComboBox3.ListIndex ComboBox2.ListIndex = ComboBox3.ListIndex End If End Sub Private Sub ComboBox1_Change() ComboBox2.SetFocus ComboBox1.SetFocus End Sub Private Sub ComboBox2_Change() ComboBox1.SetFocus ComboBox2.SetFocus End Sub HTH Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 18. Feb. 2004 16:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Harry, danke für die Antwort nur passiert das was ich mir eigentlich vorstelle nicht. Es soll so sein, daß wenn ich irgendeine ComboBox änder z.b. auf den 2. Wert, daß dann beide anderen ComboBoxen auch den 2. Wert anzeigen usw. Das ganze benutze ich übrigens zum auftrennen von einem Verzeichnisbaum. Bestehend aus Projektnummer, Kunde, Projekt. Nun soll man die Möglichkeit haben eins davon auszuwählen und dann sollen gleich beide anderen Felder den richtigen Inhalt anzeigen. Im nächsten Schritt möchte ich dann natürlich noch versuchen, sobald ein Kunde der doppelt vorkommt nur die Projekte und Nummern angezeigt werden die zu dem Kunden gehören. Die Projektnummer und der Projektname sind eindutige Bezeichnungen die nicht 2 mal vorkommen. Das ganze wiederum wird dann später in einzelne Felder in einem Zeichnungsrahmen eingefügt. ------------------ Gruß Dressler [Diese Nachricht wurde von Dressler am 18. Feb. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 19. Feb. 2004 02:17 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
sorry, der Anfang muss wie folgt lauten: Dim cboFlag as Boolean Private Sub UserForm_Initialize() cboFlag = False ... geht aber auch nur bis zur 2. Box, ansonsten dürften sich die Boxen gegenseitig beschäftigen. Vielleicht hilft auch ein Dummy Steuerelement. Vielleicht ist eine mehrspaltige Listbox auch übersichtlicher, oder die Mischung aus Combobox und Listbox. Gruss, Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 19. Feb. 2004 07:23 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Harry, die Lösung mit 2/3 funktionierenden ComboBox´en hatte ich schon etwas anders gelöst bekommen. Private Sub UserForm_Initialize() ComboBox1.AddItem ("ComboBox1 - Eintrag1") 'ComboBox1 füllen ComboBox1.AddItem ("ComboBox1 - Eintrag2") 'ComboBox1 füllen ComboBox1.AddItem ("ComboBox1 - Eintrag3") 'ComboBox1 füllen ComboBox1.ListIndex = 0 'ComboBox1 ersten Eintrag anzeigen ComboBox2.AddItem ("ComboBox2 - Eintrag1") 'ComboBox2 füllen ComboBox2.AddItem ("ComboBox2 - Eintrag2") 'ComboBox2 füllen ComboBox2.AddItem ("ComboBox2 - Eintrag3") 'ComboBox2 füllen ComboBox3.AddItem ("ComboBox3 - Eintrag1") 'ComboBox3 füllen ComboBox3.AddItem ("ComboBox3 - Eintrag2") 'ComboBox3 füllen ComboBox3.AddItem ("ComboBox3 - Eintrag3") 'ComboBox3 füllen End Sub Private Sub ComboBox1_AfterUpdate() ComboBox2.ListIndex = ComboBox1.ListIndex 'ComboBox1 als Referenz für ComboBox2 setzen ComboBox3.ListIndex = ComboBox1.ListIndex 'ComboBox1 als Referenz für ComboBox2 setzen End Sub Private Sub ComboBox2_AfterUpdate() ComboBox1.ListIndex = ComboBox2.ListIndex 'ComboBox2 als Referenz für ComboBox2 setzen ComboBox3.ListIndex = ComboBox2.ListIndex 'ComboBox2 als Referenz für ComboBox2 setzen End Sub Private Sub ComboBox3_AfterUpdate() ComboBox1.ListIndex = ComboBox3.ListIndex 'ComboBox3 als Referenz für ComboBox2 setzen ComboBox2.ListIndex = ComboBox3.ListIndex 'ComboBox3 als Referenz für ComboBox2 setzen End Sub Private Sub ComboBox1_Change() ComboBox2.SetFocus ' hier nun der Versuch kurz zu ComboBox2 zu switchen ComboBox1.SetFocus ' und wieder zurück zu ComboBox1 End Sub Private Sub ComboBox2_Change() ComboBox1.SetFocus ' hier nun der Versuch kurz zu ComboBox1 zu switchen ComboBox2.SetFocus ' und wieder zurück zu ComboBox2 End Sub Dabei hab ich einfach den ListIndex = 0 nur bei der ersten ComboBox gesetzt. Danke trotzdem für die Bemühungen ich probiere nun noch etwas weiter. ------------------ Gruß Dressler [Diese Nachricht wurde von Dressler am 19. Feb. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|