Herbers Excel-Forum - das Archiv

Listenfeld - Bezug auf andere Tabelle

Bild

Betrifft: Listenfeld - Bezug auf andere Tabelle
von: Reservist
Geschrieben am: 06.10.2003 21:20:27
Hallo Excler,

wiedermal ein Problem für mich.

In Tabelle '0' benötige ich ein Listenfeld mit Wert
aus Tabelle 'Adressen' (gleiche Mappe) D$2$:D$2000$,
wobei leere Felder ignoriert werden müssen.
Leider lässt Excel bei der eingebauten Gültigkeitprüfung
den Bezug auf eine andere Tabelle nicht zu.

Wie kann ich dies lösen ?

Gruß
Thorsten

Bild

Betrifft: AW: Listenfeld - Bezug auf andere Tabelle
von: Matthias G
Geschrieben am: 06.10.2003 22:27:22
Hallo Thorsten,
Der Bezug auf andere Tabellen funktioniert, wenn du dem Bereich einen Namen gibst.

Wenn du auf deiner langen Liste nur belegte Zellen in der Auswahlliste angezeigt bekommen willst, musst Du VBA benutzen.
Folgender Code prüft alle Zellen im Bereich (hier: $D$2:$D$2000) und listet nichtleere Felder untereinander in einer Hilfsspalte auf. Dem Bereich in der Hilfsspalte wird dann der Name "Liste" zugewiesen.

Option Explicit
Public Const Bereich = "$D$2:$D$2000"
Sub UpdateListe()
Const Hilfsspalte = 5 'Spalte E
Dim z
Dim i As Long
i = 1
Application.EnableEvents = False
For Each z In Range(Bereich)
If z.Value <> "" Then
Cells(i, Hilfsspalte).Value = z.Value
i = i + 1
End If
Next z
Cells(i, Hilfsspalte).Value = ""
Application.EnableEvents = True
ActiveWorkbook.Names.Add Name:="Liste", RefersTo:= _
"=Adressen!" & Range(Cells(1, Hilfsspalte), Cells(i, Hilfsspalte)).Address
End Sub

Bei Daten->Gültigkeit der betreffenden Zelle(n) in Tabelle "0" muss unter Liste der Bereich "=Liste" angegeben werden.

Damit die Liste immer aktuell bleibt, muss sie bei jeder Änderung der Bereichs aktualisiert werden:
(Code im Modul von Tabelle "Adressen":)


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range(Bereich), Target) Is Nothing Then Exit Sub
UpdateListe
End Sub


Falls in der Liste Formeln vorkommen, die nicht direkt geändert werden, zusätzlich noch:


Private Sub Worksheet_Calculate()
UpdateListe
End Sub



Ich hoffe, das hilft Dir weiter!
Freue mich auf Deine Rückmeldung!

Gruß,
Matthias
Bild

Betrifft: AW: Listenfeld - Bezug auf andere Tabelle
von: Reservist
Geschrieben am: 08.10.2003 09:25:49
Tausend Dank, Siehe bitte
An Matthias G - Reservist 08.10.2003 09:20:19
 Bild
Excel-Beispiele zum Thema " Listenfeld - Bezug auf andere Tabelle"
Tabellenblattnamen in ein Listenfeld einlesen Abfrage der Auswahl aus einem Gültigkeits-Listenfeld
Blätter in andere Arbeitsmappen kopieren Variablenübergabe in andere Arbeitsmappen
Bezüge auf Namen in anderen Mappen aufheben Blattinhalt von einer zur anderen Arbeitsmappe kopieren
Sicherungskopie in einem anderen Verzeichnis erstellen Teilergebnisse einer Serie von Tabellen in anderes Blatt kopieren
Bei Eingabe andere Werte löschen Eintragungen im 1. Blatt in andere Blätter übernehmen