Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
708to712
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
708to712
708to712
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
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.

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige