Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1700to1704
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
Inhaltsverzeichnis

Validation.add mit Array

Validation.add mit Array
22.07.2019 13:40:57
Marvin
Hallo zusammen,
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!

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

Betreff
Datum
Anwender
Anzeige
AW: Validation.add mit Array
22.07.2019 14:57:59
Beverly
Hi Marvin,
versuche es mal so:
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 As Integer, j As Integer
Dim SName() As String
If Intersect(Target, Range("B1:B10")) Is Nothing Then Exit Sub
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 Preserve SName(1 To j) As String
SName(j) = wsName
End If
Next i
wsName = Join(SName(), ",")
With ActiveCell
.Validation.Delete
.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlGreater, Formula1:=wsName
.Validation.IgnoreBlank = True
.Validation.InCellDropdown = True
.Validation.ShowInput = True
End With
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Validation.add mit Array
22.07.2019 15:14:08
Marvin
Hallo Beverly,
Das Klappt super!
Vielen lieben Dank, du hast mir extrem weiter geholfen!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige