AW: Dropdown erstellen mit Tabellenblättern als Inhalt
28.05.2014 11:37:52
Beverly
Hi Shayev,
da ich deine Mappe nicht kenne, bin ich davon ausgegangen, dass A1 die Gültigkeitszelle ist. In Spalte C werden die Namen der vorhadenen Tabellen eingetragen. Folgenden Code ins Codemodul des Tabellenblattes:
Option Explicit
Dim wksTab As Worksheet
Dim strTabs As String
Dim lngTab As Long
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngLetzte As Long
If Target.Address = "$A$1" Then
If Target "" Then
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, _
Rows.Count)
Application.EnableEvents = False
Worksheets(Target.Value).Delete
lngTab = 1
Range(Cells(1, 3), Cells(lngLetzte, 3)).ClearContents
For Each wksTab In Worksheets
If wksTab.Name ActiveSheet.Name Then
Cells(lngTab, 3) = wksTab.Name
lngTab = lngTab + 1
End If
Next wksTab
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Range(Cells(1, 3), Cells(lngTab - 1, 3)).Address
.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Range("A1").ClearContents
Application.EnableEvents = True
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lngTab = 1
If Target.Address = "$A$1" Then
For Each wksTab In Worksheets
If wksTab.Name ActiveSheet.Name Then
Cells(lngTab, 3) = wksTab.Name
lngTab = lngTab + 1
End If
Next wksTab
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Range(Cells(1, 3), Cells(lngTab - 1, 3)).Address
.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End Sub
Wenn du für die Fehlerhinweise in der Gültigkeitszelle etwas anderes anzeigen willst, dann musst du das mit dem Makrorekorder aufzeichnen und in meinem Code entsprechend anpassen.