Word 2003 - 2 abhängige Dropdownfelder

  • #1
K

Katbra

Neues Mitglied
Themenersteller
Dabei seit
29.11.2007
Beiträge
4
Reaktionspunkte
0
Hallo!
Ich habe ein Problem mit Word und den Dropdownmenüs. Ich hätte gern aus 35 (da ist schon das erste Problem - ich kann nur 25 Einträge eingeben) 1 ausgesucht und dann soll in einem zweiten Feld ein Erklärungstext erscheinen. Geht das mit If oder einem SVerweis oder sogar einem Makro? Ich bin schon ganz verzweifelt, da ich es einfach nicht hinbekomme.
Kann mir da jemand helfen, bitte?

Liebe Grüße
Hanna
 
  • #2
Hallo Katbra,

folgender Beispiel-Code geht davon aus, dass 2 ComboBoxen auf dem Dokument angelegt sind:
ComboBox1
ComboBox2

Erklärung zum Code:
beim Öffnen des Documents (Document_Open()) werden in ComboBox1 30 Werte geladen und in ComboBox2 30 passende Erklärungen.

Wird in ComboBox1 etwas geändert ( ComboBox1_Change() ) wird, wenn der Wert nicht einem aus der Liste entspricht, der erste Wert eingestellt.
In ComboBox2 die dazu passende Erklärung.
(Es können also nur Werte aus der Liste ausgewählt werden.)

Wird in ComboBox2 etwas geändert ( ComboBox2_Change()) wird der passende Wert zu ComboBox1 eingestellt.
(Ist also immer passend zu ComboBox1)

Gruß Matjes :)
Der folgende Code muß in der Code-Seite des dokuments (ThisDocument) liegen.
Code:
Private Sub Document_Open()
 Dim x As Long, sTxt As String
 With Me.ComboBox1
 ->ComboBox1 mit 30 Werten füllen
  .Clear
  For x = 1 To 30
   sTxt = x
   sTxt = Wert & String(4 - Len(sTxt), 0) & sTxt
   .AddItem sTxt
  Next
 End With
 With Me.ComboBox2
 ->ComboBox2 mit 30 passenden Erklärungen für den jeweiligen Werten füllen
  .Clear
  For x = 1 To 30
   sTxt = x
   sTxt = Erklärung & String(4 - Len(sTxt), 0) & sTxt
   .AddItem sTxt
  Next
 End With
End Sub
Private Sub ComboBox1_Change()
 Dim ind As Long
 ind = Me.ComboBox1.ListIndex
 If ind = -1 Then Me.ComboBox1.ListIndex = 0
 Me.ComboBox2.ListIndex = Me.ComboBox1.ListIndex
End Sub
Private Sub ComboBox2_Change()
 If Me.ComboBox2.ListIndex <> Me.ComboBox1.ListIndex Then
  Me.ComboBox2.ListIndex = Me.ComboBox1.ListIndex
 End If
End Sub
 
  • #3
Hallo Matjes!
Das ging aber schnell!!! Vielen Dank.

ComboBox ist doch das Dropdownfeld, oder? Muss ich die Werte in den Code eintragen oder sucht es sich die aus der Tabelle, die in einem externen Worddokument liegt? Dazu müsste man jedoch einen Link setzen, oder?

Kann ich eigentlich mehr als einen Wert aussuchen (3, 6 und 9 z.B.)?

Ich hoffe, das wird nicht zu kompliziert! Ich hae leider überhaupt keine Erfahrung damit - nur ein dickes Buch zum Nachschauen und Nachlesen...

Gruß Hanna
 
  • #4
Hallo Hanna,

eine Möglichkeit wäre die werte aus einer Excel-Datei einzulesen.
Dafür hab ich dir ein Beispiel gebaut.
Achte auf die Hinweise in ComboBoxenAufdaten2().

zu:
Kann ich eigentlich mehr als einen Wert aussuchen (3, 6 und 9 z.B.)?
Im Moment nicht. Da mußt du dir erstmal überlegen, was du genau willst.

Gruß Matjes :)

Code:
Option Explicit
Private Sub ComboBox1_Change()
 Dim ind As Long
 ind = Me.ComboBox1.ListIndex
 If ind = -1 Then Me.ComboBox1.ListIndex = 0
 Me.ComboBox2.ListIndex = Me.ComboBox1.ListIndex
End Sub
Private Sub ComboBox2_Change()
 If Me.ComboBox2.ListIndex <> Me.ComboBox1.ListIndex Then
  Me.ComboBox2.ListIndex = Me.ComboBox1.ListIndex
 End If
End Sub
Private Sub Document_Open()
 Call ComboBoxenAufdaten2
End Sub


Private Function ComboBoxenAufdaten2()
->***********************************************
->Werte aus einer Excel-Datei in ComBoBoxen laden
->
->Im VB-Editor unter Extras->Verweise muß
->  Microsoft-Excel 11.0 object Library
->  eingebunden werden
->
->Excel-Datei:
-> Name: ZweiDropdownFelder.xls
-> Pfad: im gleichen Verzeichnis wie Word-Datei
-> Blatt: WerteUndTexte
-> Spalte 1, Zeile 1 -70 : Werte
-> Spalte 2, Zeile 1 -70 : Erklärungen
->***********************************************

 Dim XLApp As Excel.Application
 Dim wb As Excel.Workbook
 Dim ws As Excel.Worksheet
 Dim XLS As Object
 Dim bExcelBereitsOffen As Boolean
 Dim x As Long, sTxt As String, sMeineXLSDatei As String
 
->Prüfen, ob Excel schon gestartet ist
 Set XLApp = GetObject(, Excel.Application)
 bExcelBereitsOffen = True
 If XLApp Is Nothing Then
 ->nein->Excel starten
  bExcelBereitsOffen = False
  Set XLApp = CreateObject(Excel.Application)
  XLApp.Visible = True
 End If
 
->Xls-Datei oeffnen
 sMeineXLSDatei = ThisDocument.Path & Application.PathSeparator & ZweiDropdownFelder.xls
 Set wb = Excel.Workbooks.Open(FileName:=sMeineXLSDatei, ReadOnly:=True)
 
->Blatt setzen
 Set ws = wb.Worksheets(WerteUndTexte)
 
 Me.ComboBox1.Clear
 Me.ComboBox1.List = ws.Range(ws.Cells(1, 1), ws.Cells(70, 1)).Value
 Me.ComboBox2.Clear
 Me.ComboBox2.List = ws.Range(ws.Cells(1, 2), ws.Cells(70, 2)).Value
 
->Datei schliessen
 wb.Close Savechanges:=False
 
->Wenn Excel gestartet wurde, schliessen
 If bExcelBereitsOffen Then XLApp.Quit
 
End Function
 
  • #5
Guten Morgen Matjes!

Vielen Dank für Deine Hilfe. Ich werde mir das jetzt mal genauer anschauen und Deinen Anweisungen folgen.

Die mir aufgetragene Aufgabe beinhaltet einen Brief schreiben, in dem man Bedingungen auswählt. Einer bekommt einen Brief mit 1 Bedingung und erklärendem Text zugeschickt, ein anderer muss eben 3 Bedingungen erfüllen (mit 3 Erklärungstexten). Ist das zu realisieren?

Liebe Grüße Hanna[br][br]Erstellt am: 30.11.07 um 06:51:52
[br]Hallo!
Ist es denn möglich, mehrere Bedingungen auszuwählen (per Makro)? Wenn nicht, muss ich einen Plan B ausarbeiten. Geht es auch mit If Then...? Ich werde es mal ausprobieren.

Grüße, Hanna
 
  • #6
Hallo Hanna,

für die Auswahl von 3 Bedingungen gibt es mehrere Möglichkeiten:
a) z.B. 3 DropdownListBoxen
b) Eine Listbox mit den auswählbaren Bedingungen kombiniert mit einer Listbox der ausgewählten Bedingungen und 2 Command-Button zur Übertragung einer Bedingung in die Listbox bzw. Löschung aus der Listbox.

Gruß Matjes :)
 
  • #7
Guten Morgen!

Irgendwie stehe ich auf'm Schlauch. :( Es erschien mir gar nicht so kompliziert (aber das täuscht ja oft.) Ich dachte man kann ein Makro schreiben, dass mir eine vorgegebene Anzahl von Zeilen im Word ausfüllt - Ich wähle in einem Dropdownfeld die entsprechende Zahl aus und dann erscheint ein Erklärungstext.
<<Wenn diese Zahl gewählt ist, gehe zu dieser Tabellenzeile und geben diesenText an. >>
Das ist es, was gemacht werden soll. Ich muss es nun elegant lösen. Vielleicht denke ich auch einfach nur zu kompliziert? :-\
Hanna
 
Thema:

Word 2003 - 2 abhängige Dropdownfelder

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben