Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dropdown Felder gefiltert

Dropdown Felder gefiltert
20.12.2005 07:32:36
martin
Hallo,
folgende Situation:
Ich habe ein Tabellenblatt mit Adressen wie z.B.:
Name Postleitzahl Ort
a-name 12345 a-ort
b-name 67890 b-ort
c-name 12345 c-ort
Nun muss ich diesen Kunden in einem anderen Tabellenblatt Umsätze zuweisen.
Jetzt würde ich gerne z.B. in Zelle B2 der Umsatztabelle eine Dropdown Liste haben, wo ich die Postleitzahl auswählen kann, die Quelle soll die Adresstabelle sein, und nach möglichkeit sollten keine doppelten Postleitzahlen drin sein.
Dann würde ich gerne in Zelle C2 eine Drop-Down Liste haben, die nur die Namen anzeigt, die der Postleitzahl aus Zelle B2 entsprechen.
Hier also, wenn in B2 aus dem Drop-Down die Postleitzahl 12345 ausgewählt wurde in C2 im Drop-Down Feld nur "a-name" und "c-name" angezeigt werden.
Hat da jemand eine Idee.
Gruß
Martin
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dropdown Felder gefiltert
20.12.2005 09:24:01
u_
Hallo,
in das Klassenmodul der Umsatztabelle:
Option Explicit

Private Sub Worksheet_Activate()
Dim i As Integer, strValid As String
With Sheets("Adressen")
For i = 2 To .Range("B65536").End(xlUp).Row
If WorksheetFunction.CountIf(.Range(.Cells(2, 2), .Cells(i, 2)), .Cells(i, 2)) = 1 Then
strValid = strValid & .Cells(i, 2) & ","
End If
Next i
End With
strValid = Left(strValid, Len(strValid) - 1)
With Range("b2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=strValid
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, strValid As String
If Target.Address = "$B$2" Then
Range("c2") = ""
With Sheets("Adressen")
For i = 2 To .Range("A65536").End(xlUp).Row
If .Cells(i, 2) = Cells(2, 2) Then
strValid = strValid & .Cells(i, 1) & ","
End If
Next i
End With
strValid = Left(strValid, Len(strValid) - 1)
With Range("c2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=strValid
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End Sub

Gruß
Geist ist geil!
Anzeige
AW: Dropdown Felder gefiltert
20.12.2005 11:48:04
Martin
Hallo,
danke für die schnelle Hilfe. Funktioniert soweit.
Aber da ich kein VBA-Freak bin nun noch eine Frage.
Wie muss ich den Code verändern, wenn ich diese Funktion in der Umsatztabelle für alle Zeilen anwenden will? Script funktioniert ja nur genau für die Zellen B2 und C2. Und wenn ich die Zellen kopiere liegt der Bezug eben immer auf der Zelle B2 und nicht wie vermutet auf B3.
Gruß
Martin
Anzeige
AW: Dropdown Felder gefiltert
20.12.2005 12:37:58
u_
Hallo,
meinst du so?

Private Sub Worksheet_Activate()
Dim i As Integer, strValid As String
With Sheets("Adressen")
For i = 2 To .Range("B65536").End(xlUp).Row
If WorksheetFunction.CountIf(.Range(.Cells(2, 2), .Cells(i, 2)), .Cells(i, 2)) = 1 Then
strValid = strValid & .Cells(i, 2) & ","
End If
Next i
End With
strValid = Left(strValid, Len(strValid) - 1)
With Range("b2:B1000").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=strValid
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, strValid As String
If Target.Column = 2 Then
On Error GoTo errHDL
Application.EnableEvents = False
Target.Offset(0, 1) = ""
With Sheets("Adressen")
For i = 2 To .Range("A65536").End(xlUp).Row
If .Cells(i, 2) Like Target & "*" Then
strValid = strValid & .Cells(i, 1) & ","
End If
Next i
End With
strValid = Left(strValid, Len(strValid) - 1)
With Target.Offset(0, 1).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=strValid
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
errHDL:
Application.EnableEvents = True
End Sub

Gruß
Geist ist geil!
Anzeige
AW: Dropdown Felder gefiltert
20.12.2005 15:22:20
Martin
Was kann ich machen?
Sobald ich mit o.g. Script in meinem Sheet "Adressen" ab der 60 Zeile Daten eingeben will, erhalte ich einen Laufzeitfehler.
Laufzeitfehler '-2147417848 (80010108)':
Die Methode 'Add' für das Objekt 'Validation' ist fehlgeschlagen.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige