Validation.add mit Array
22.07.2019 13:40:57
Marvin
ich bin neu hier und habe eine Frage. Ich hoffe ihr könnt mir weiterhelfen, da ich bis jetzt nichts zu dem Thema gefunden habe.
Es handelt sich um folgendes:
Ich möchte in einer Excel Mappe vergleichen, ob ein Tabellenblatt einen Ausdruck enthält, welcher gleichzeitig in einer bestimmten Zelle steht. Anschließend sollen mir genau diese Tabellenblätter rausgeschrieben werden. Das Bekomme ich soweit hin. Jetzt kommt aber das Problem. Ich möchte in einem bestimmten Bereich eine Auswahl (Drop-Down) von den oben genannten tabellenblättern haben, OHNE das sie vorher aufgelistet werden.
Sobald ich in den bestimmten Bereich klicke, soll mir die Auswahl der Tabellenblätter angezeigt werden und ich kann mir eins aussuchen. Ich bekomme es nicht hin, dass mir alle angezeigt werden, sondern immer nur das letzte oder ein bestimmtes.
Mein Code sieht wie folgt aus:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim ACell As Range
Dim Cname As String
Dim wsName As String
Dim Comp, i, j As Integer
Dim SName() As String
Application.ScreenUpdating = False
For i = 1 To ThisWorkbook.Worksheets.Count
wsName = Sheets(i).Name
Cname = Sheets(i).Range("D2")
Comp = InStr(1, Cname, wsName, vbTextCompare)
If Comp > 0 Then
j = j + 1
ReDim SName(1 To j) As String
SName(j) = Sheets(i).Name
Set ACell = Target
If Intersect(Target, Range("B1:B10")) Is Nothing Then Exit Sub
ACell.Validation.Delete
ACell.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlGreater, Formula1:=(SName(j))
ACell.Validation.IgnoreBlank = True
ACell.Validation.InCellDropdown = True
ACell.Validation.ShowInput = True
End If
Next i
Application.ScreenUpdating = True
End Sub
Über Hilfe würde ich mich freuen. Danke!