Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
748to752
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
748to752
748to752
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

find & autofilter

find & autofilter
30.03.2006 14:09:35
Volker
Hallo allerseits,
Auf die Gefahr hin, dass ich den passenden Beitrag im Archiv übersehen habe:
Wie kann ich per VBA in einer gefilterten Liste einen ausgeblendeten Wert finden, ohne jede Zelle per Schleife zu vergleichen.
Mit find geht es leider nicht.
Zum Hintergrund:
In Spalte C stehen Daten die ich per Dropddown aus einer Liste wählen kann, die in einer anderen Spalte steht. Ich würde gerne neue Werte zur Liste hinzufügen, indem jede Eingabe im WorksheetChange-Ereignis auf Vorhandensein in der Liste geprüft wird.
Das geht auch soweit:
Ich suche die neue Eingabe aus Spalte C in Spalte J. Wenn sie dort nicht vorhanden ist, wird sie der Liste zugefügt und die Gültigkeit in Spalte C erweitert. Leider funzt das find halt nicht, wenn der gesuchte Wert ausgeblendet ist.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Columns(10).Find(Target) Is Nothing Then
Target.SpecialCells(xlCellTypeSameValidation).Validation _
.Modify xlValidateList, xlValidAlertStop, Formula1:="=$j$2:$j$" &_
Range("j1").End(xlDown).Row + 1
Range("j1").End(xlDown).Offset(1, 0) = Target
End If
End Sub

Weiß jemand Rat? Wäre es eleganter, die Liste in einer Variablen abzulegen?
Gruß und Dank im Voraus
Volker

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: find & autofilter
30.03.2006 19:33:25
ChrisL
Hallo Volker
Du hast die Liste für den Vergleich bereits in der Gültigkeit zur Verfügung. Ein Beispiel mit Zelle A1 und B1.

Sub t()
Dim rngEingabe As Range
Dim rngValidation As Range
Dim strListe As String
Set rngEingabe = Range("A1")
Set rngValidation = Range("B1")
With rngValidation.Validation
strListe = .Formula1
If InStr(strListe, rngEingabe) = 0 Then
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=WorksheetFunction.Substitute(strListe, ";", ",") & "," & rngEingabe
End If
End With
End Sub

Gruss
Chris
Anzeige
AW: find & autofilter
31.03.2006 06:33:36
Volker
Hallo Chris,
Das man mit ".Validation.Formula1" an den string der Validierungsliste kommt, wußte ich nicht. Die Einträge in einer Hilfsspalte zu verwalten fand ich sowieso lästig.
Klasse Lösung, vielen Dank.
Gruß
Volker

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige