Felder und Dropdowns

Guten Tag alle Experten
Folgende Aufgabe:
Ich habe eine Reihe von Personen, und jeder Person will ich eine Anzahl von Code-Nummern zuordnen. Auf einer Vorlage sollen Dropdown-Listen miteinenader verbunden werden.
Konkret: Wähle ich aus der ersten Dropdown-Liste die Person XY, dann sollen in der zweiten Dropdown-Liste diejemigen Code-Nummern erscheinen, die der person XY zugeordnet sind.
Ob das in Word irgendwie möglich ist?
Ich bedanke mich für jeden Hinweis.
Zsolt

Hallo Zsolt,

das ist möglich. Dazu werden der Dropdownliste (Kombinationsbox) mit den Namen zwei Ereignis-Makros zugeordnet.

Das 1. Makro startet beim Anklicken der Box und erzeugt die Auswahlliste mit den Namen.
Das 2. Makro startet bei Änderung der Auswahl (des Wertes) des Namens und stellt in der Kombinationsbox für die Codes die zugehörige Auswahlliste ein.

Ich hab in meinem Beispiel-Makro die Namen und Codes im Makro aufgelistet, in diesem Fall ist es sinnvoll das VBA-Projekt oder die Dot-Datei gegen Änderungen zu schützen. Theoretisch könnte man Namen und Codes auch aus einer externen Datei abrufen. Dann muß aber der Zugriff von allen Anwender-Arbeitsplätzen gewährleistet sein.

In meinem Beispiel bezieht sich ComboBox1 auf die Auswahlliste mit den Namen und ComboBox2 auf die Auswahlliste mit den Codes.

Private Sub ComboBox1\_GotFocus()
 Dim Namen() As String
 AnzahlNamen = 5
 'Für weitere Namen Anzahl erhöhen und Zeilen ergänzen
 CodeAlt = ComboBox2.Value
 ReDim Namen(AnzahlNamen)
 Namen(0) = ""
 Namen(1) = "Meier"
 Namen(2) = "Schulze"
 Namen(3) = "Kunze, B."
 Namen(4) = "Kunze, A."
 Namen(5) = "Bill"
 With ComboBox1
 Do Until .ListCount = 0
 .RemoveItem (0)
 Loop
 For I = 0 To AnzahlNamen
 .AddItem (Namen(I))
 Next
 End With
 ComboBox2.Value = CodeAlt 'Wert wird wieder zugewiesen
End Sub

Private Sub ComboBox1\_Change()
 Dim Codes() As String, Anwender As String
 Dim NC() As String
 'Liste der Namen und Codes in einer 2-dimensionalen Matrix
 'Für weitere Codes Wert für Anzahl ändern und Codes am Ende nachtragen
 Anzahl = 15 'Anzahl Zeilen mit Code-Nummern
 ReDim NC(Anzahl, 2)
 NC(1, 1) = "": NC(1, 2) = ""
 NC(2, 1) = "Meier": NC(2, 2) = "ABCD"
 NC(3, 1) = "Meier": NC(3, 2) = "1234"
 NC(4, 1) = "Meier": NC(4, 2) = "12AB"
 NC(5, 1) = "Schulze": NC(5, 2) = "XYCD"
 NC(6, 1) = "Schulze": NC(6, 2) = "A234"
 NC(7, 1) = "Kunze, B.": NC(7, 2) = "QQCD"
 NC(8, 1) = "Kunze, B.": NC(8, 2) = "18934"
 NC(9, 1) = "Kunze, B.": NC(9, 2) = "vCAB"
 NC(10, 1) = "Kunze, B.": NC(10, 2) = "0AS2AB"
 NC(11, 1) = "Kunze, A.": NC(11, 2) = "ST-2CD"
 NC(12, 1) = "Kunze, A.": NC(12, 2) = "XJ34"
 NC(13, 1) = "Kunze, A.": NC(13, 2) = "88-AB"
 NC(14, 1) = "Bill": NC(14, 2) = "89uz"
 NC(15, 1) = "Bill": NC(15, 2) = "PO-WE3"
' NC(16, 1) = "Name": NC(15, 2) = "Code"
 Anwender = ComboBox1.Value
 'Anzahl der Codes des Anwenders ermitteln
 I = 0
 Anzahlcodes = 0
 Do
 I = I + 1
 If Anwender = NC(I, 1) Then
 Anzahlcodes = Anzahlcodes + 1
 End If
 Loop Until I = Anzahl
 If Anzahlcodes = 0 Then
 MsgBox ("Ungültiger Name wurde eingegeben")
 Exit Sub
 End If
'Gültige Codes des Anwenders auslesen
 ReDim Codes(Anzahlcodes)
 I = 0
 J = 0
 Do
 I = I + 1
 If Anwender = NC(I, 1) Then
 J = J + 1
 Codes(J) = NC(I, 2)
 If J = Anzahlcodes Then Exit Do
 End If
 Loop Until I = Anzahl
 With ComboBox2
 Do Until .ListCount = 0
 .RemoveItem (0)
 Loop
 For I = 1 To Anzahlcodes
 .AddItem (Codes(I))
 Next
 .Value = ""
 End With
End Sub

Auf wunsch kann ich auch eine Beispieldatei per e-mail schicken

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]