Ich möchte eine Datenüberprüfungsliste aus Text nur in einem Bereich von Zellen erstellen.Text aus dem Bereich abrufen - VBA (Excel)
Ich suchte nach Formel, aber ich fand nichts, also entschied ich mich, meine eigene Funktion zu machen, aber es funktioniert nicht.
habe ich versucht, diese Codes:
Code 1:
Function ListFromRange(rng As Range) As Range
Dim cl As Range
Dim entry As Range
For Each cl In rng
If Not IsNumeric(cl.Value) Or cl.Value = "" Then
If entry Is Nothing Then
Set entry = cl
Else
Set entry = Union(entry, cl)
End If
End If
Next
Set ListFromRange = entry
End Function
Code 2:
Function ListFromRange2(rng As Range) As Variant
Dim cl As Range
Dim i As Integer
Dim entry() As String
ReDim entry(rng.Count)
For Each cl In rng
If Not IsNumeric(cl.Value) Or cl.Value = "" Then
entry(i) = cl.Value
i = i + 1
End If
Next
ListFromRange2 = entry
End Function
Der zweite Code funktioniert, aber wenn ich mit einem festgelegten Namen und Verwendung verwenden, die definiert Name für die Datenüberprüfungsliste Es sagt mir, dass es einen Fehler in der Validierungslistenquelle gibt, aber wenn ich diese Funktion mit dem Index verwende, wird das gewünschte Ergebnis zurückgegeben.
Auch einige Bilder mehr erklären:
ich eine Liste von Zellen machen wollen, die einen Text enthält, und wenden Sie es hier:
Aber ohne die Zahl Werte.
Ich denke, Sie wollen, dass Sie 'If' Anweisung tatsächlich sein 'If Not IsNumeric (cl.Value) Und nicht cl.Value =" "Then'. Das "Not" gilt für jede Anweisung einzeln, wenn Sie Ihre Logik nicht begrenzen. Geben Sie in der ersten Zeile auch eine 'Range' und keine' Variant' zurück. Schließlich, * was versuchst du ** zu machen? Du hast es nicht wirklich gesagt. Momentan gibt Ihre Funktion einen Bereich von Zellen zurück, die nicht-numerische Werte enthalten ... warum ist das falsch/was soll es sonst tun? – Wolfie
Die Validierungsliste funktioniert nicht für meine UDF, was Sie im Bild sehen, ist eine Validierung für die gesamte Zeile, so dass Zahlenwerte enthalten sind. – Tima
Okay, hast du deine Logik aktualisiert, wie ich oben vorgeschlagen habe? Dann sind Sie sicher, dass Sie die Werte im Drop-down löschen und aktualisieren?Es gibt keine Möglichkeit, dass "IsNumeric (" 12.300 ")" false "zurückgibt, also ist Ihre Logik in Ordnung, es muss anderer Code sein, den Sie nicht anzeigen, der fehlschlägt. – Wolfie