Dropdownfelder
Beschreibung:
Dieses Beispiel zeigt, wie sie unter Excel Inhalte aus einer Tabelle auslesen und damit eine Dropdownliste bestücken.
Quelltext:
Option Explicit 'hiermit wird die explizite Deklaration aller Variablen gefordert - nicht zwingend notwendig, beschleunigt aber das Programm und zeugt von gutem Programmierstil
Sub Dropdownfeld_EXAMPLE()
'***********Variablen deklarieren*************
Dim seite, zahl As String
Dim laenge As Integer
Dim posa, zähler As Variant
seite = "DIALOG 1"
laenge = 0
'***********Fehlerbehandlungsrout.************
On Error GoTo FEHLERBEHANDLUNG 'Verzweige, sobald ein Fehler auftritt zum Abschnitt
"Fehlerbehandlung"
'**************Hauptprogramm*****************
DialogSheets(seite).DrawingObjects("DRP 1").RemoveAllItems
'Alle Einträge aus Dropdownfeld "DRP 1" aus
Dialog "seite" entfernen
' Alle eingetragenen Elemente (hier max 50 Stück) namentlich (Name
in Spalte "A")
' aus Datenblatt "DATENB 1" als neue Elemente hinzufügen
'****************Schleife 1*****************
For zähler = 1 To 50
' 50 hier als Maximum der möglichen Elemente; ist der
geprüfte Bereich leer, dann mache nichts, sonst füge Inhalt der aktuellen Zeile als
neues Element in das gewählte Dropdownfeld ein
zahl = CStr(zähler) 'zahl ist Wert von zähler als String; nötig, da *.Range() einen Text als
Argument erwartet.
If Sheets("DATENB
1").Range("A" + zahl) = "" Then
'tut nichts
Else
' Zähler ist gleichzeitig die Position in der Liste, da 1
gleichzeitig
' die erste Zeile und das erste Element ist. Ergo: Füge Elemente mit der
' Bezeichnung an Position "zähler" in das Dropdownfeld ein.
Sheets(seite).DrawingObjects("DRP 1").AddItem Text:=Sheets("DATENB
1").Range("A" + zahl), Index:=zähler
' Anzahl der hinzugefügten Elemente entspricht Anzahl der
Durchläufe.
' Summiere Anzahl der Schleifendurchläufe auf.
laenge = laenge + 1
End If
Next zähler 'verweist
zum Schleifenanfang
' Länge des Dropdownfeldes mit Anzahl der Elemente abstimmen
Application.DialogSheets(seite).DropDowns("DRP 1").DropDownLines
= laenge 'Länge entspricht der Anzahl der Durchläufe
von Schleife 1 und damit der Anzahl der eingefügten Elemente
' Listenposition auf 1 setzen
Application.DialogSheets(seite).DropDowns("DRP 1").ListIndex
= 1
' Dialog ausführen
DialogSheets(seite).Show 'Das
Argument seite muss nicht als Variable deklariert sein, ein fester Wert tut es
auch, die Version als Variable zeugt allerdings von besserem Programmierstil
' Das war's: verlasse das Programm
Exit Sub
FEHLERBEHANDLUNG: 'Inhaltlich gesehen
beginnt hier ein neuer Block
Resume Next 'Setze mit nachfolgender Anweisung fort - warum? Diese Anweisung ist
unkritisch: mögliche Fehler sind: Liste bereits leer, oder kein Element zum einfügen
gefunden. Eine genauere Aufschlüsselung kann man sich in diesem Fall also sparen!
End Sub