Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  mehrere ComboBox´en verändern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von Dressler an!   Senden Sie eine Private Message an Dressler  Schreiben Sie einen Gästebucheintrag für Dressler

Beiträge: 301
Registriert: 19.11.2003

Acad 2002

erstellt am: 17. Feb. 2004 07:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von BloodyMess an!   Senden Sie eine Private Message an BloodyMess  Schreiben Sie einen Gästebucheintrag für BloodyMess

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 17. Feb. 2004 15:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dressler 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von harryk an!   Senden Sie eine Private Message an harryk  Schreiben Sie einen Gästebucheintrag für harryk

Beiträge: 124
Registriert: 19.08.2003

erstellt am: 17. Feb. 2004 16:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dressler 10 Unities + Antwort hilfreich

hi,
nimm das change oder besser das afterupdate Ereignis der z.B. Combobox1. Mit dem ausgewählten Wert aus Combo1 erstellst Du die Daten für Combo2 und füllst es usw..

Gruss,
Harry

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dressler
Mitglied
technischer Angestellter


Sehen Sie sich das Profil von Dressler an!   Senden Sie eine Private Message an Dressler  Schreiben Sie einen Gästebucheintrag für Dressler

Beiträge: 301
Registriert: 19.11.2003

Acad 2002

erstellt am: 18. Feb. 2004 08:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Dressler an!   Senden Sie eine Private Message an Dressler  Schreiben Sie einen Gästebucheintrag für Dressler

Beiträge: 301
Registriert: 19.11.2003

Acad 2002

erstellt am: 18. Feb. 2004 08:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von BloodyMess an!   Senden Sie eine Private Message an BloodyMess  Schreiben Sie einen Gästebucheintrag für BloodyMess

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 18. Feb. 2004 12:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dressler 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von harryk an!   Senden Sie eine Private Message an harryk  Schreiben Sie einen Gästebucheintrag für harryk

Beiträge: 124
Registriert: 19.08.2003

erstellt am: 18. Feb. 2004 16:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dressler 10 Unities + Antwort hilfreich

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

HTHHope that helps = Hoffe es hilft
Harry

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dressler
Mitglied
technischer Angestellter


Sehen Sie sich das Profil von Dressler an!   Senden Sie eine Private Message an Dressler  Schreiben Sie einen Gästebucheintrag für Dressler

Beiträge: 301
Registriert: 19.11.2003

Acad 2002

erstellt am: 18. Feb. 2004 16:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von harryk an!   Senden Sie eine Private Message an harryk  Schreiben Sie einen Gästebucheintrag für harryk

Beiträge: 124
Registriert: 19.08.2003

erstellt am: 19. Feb. 2004 02:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dressler 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Dressler an!   Senden Sie eine Private Message an Dressler  Schreiben Sie einen Gästebucheintrag für Dressler

Beiträge: 301
Registriert: 19.11.2003

Acad 2002

erstellt am: 19. Feb. 2004 07:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz