Anzeige
Archiv - Navigation
1360to1364
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

Dropdown erstellen mit Tabellenblättern als Inhalt

Dropdown erstellen mit Tabellenblättern als Inhalt
28.05.2014 08:41:27
Shayev
Hallo zusammen,
ich versuche ein Dropdown Menü zu erstellen, dieser soll die Tabellenblätter der Arbeitsmappe enthalten und anschließend, wenn ein Tabellenblatt ausgewählt wird, soll dieses gelöscht werden! Hat das jmd. schon gemacht und hat einen Tip?
Danke im Voraus!
Gruß Shayev

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dropdown erstellen mit Tabellenblättern als Inhalt
28.05.2014 10:47:53
Beverly
Hi Shayev,
was für ein DropDown - Gültigkeitsprüfung, Formular-Steuerelement oder ActiveX-Steuerelement?


AW: Dropdown erstellen mit Tabellenblättern als Inhalt
28.05.2014 11:03:58
Shayev
Hallo Karin,
danke für die Rückmeldung! Dass kann ich dir leider nicht sagen, ich glaube mit Gültigkeitsprüfung funktioniert es nicht! Zumindest weiß ich nicht, wie es funktionieren könnte! Bei den anderen zwei Steuerelementen könnte ich es mir eher vorstellen, aber da fehlt mir das Know-how! Ich bin da offen, ich nehme das was funktioniert!
Danke und Gruß Shayev

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.


Anzeige
AW: Dropdown erstellen mit Tabellenblättern als Inhalt
28.05.2014 13:34:14
Shayev
Hallo Karin,
vielen vielen Dank! :) Jetzt habe ich aber noch eine Frage, wenn ich ein neues Tabellenblatt hinzufüge, dann soll es auch im Dropdown erscheinen, dynamisch also! Und es sollen Tabellenblätter ab dem Tabellenblatt index 7 im dropdown erscheinen!
Danke und Gruß Shayev

AW: Dropdown erstellen mit Tabellenblättern als Inhalt
28.05.2014 14:12:12
Beverly
Hi Shayev,
zu Frage 1: ändere diese Zeile in beiden Codes
If wksTab.Name  ActiveSheet.Name And wksTab.Index > 7 Then
zu Frage 2: das Einfügen eines neuen Tabellenblattes löst kein Ereignis aus. Es gibt folglich 2 Möglichkeiten, wobei die erste davon im Code realisiert ist - setze den Cursor in eine andere Zelle und dann wieder zurück in A1, damit wird die Liste aktualisiert.
Die andere Möglichkeit ist, dass du beim Aktivieren des Tabellenblattes den Code zum Füllen der Gültigkeitsliste ausführen lässt.


Anzeige
Einfügen Blatt-Ereignis...
28.05.2014 14:38:08
EtoPHG
Hallo Karin,
Zitat: das Einfügen eines neuen Tabellenblattes löst kein Ereignis aus.
Das ist eine unvollständige Aussage. Es gibt nur kein nach Add/Delete benanntes Sheet-Ereignis, aber eim Einfügen oder Löschen eines Blatts wird, ausser beim Löschen des nicht aktiven Blatts per VBA, ein _Activate Ereignis ausgelöst. Darum kann mit dem Workbook_SheetActivate relativ einfach festgestellt werden, ob über das GUI von Excel Blätter hinzugekommen oder gelöscht wurden. Beispiel (in DieserArbeitsmappe):
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Static lshCnt As Long
If lshCnt = 0 Then lshCnt = ThisWorkbook.Sheets.Count
Select Case ThisWorkbook.Sheets.Count
Case Is  lshCnt
MsgBox "Was Neues!"
End Select
lshCnt = ThisWorkbook.Sheets.Count
End Sub
Gruess Hansueli

Anzeige
AW: Einfügen Blatt-Ereignis...
28.05.2014 17:51:11
Beverly
Hi Hansueli,
ja, du hast natürlich Recht - dass beim Einfügen eines Tabellenblattes das auswertbare SheetActivate-Ereignis ausgeführt wird, daran hatte ich im Augenblick nicht gedacht.
Einfacher und effektiver ist es jedoch, wenn man - wie schon vorgeschlagen - das Activate-Ereignis des Tabellenblattes mit dem DropDown-Listenfeld benutzt, weil der Code nur dann ausgeführt wird, wenn dieses Tabellenblatt aktiviert wird. Steht der Code jedoch unter DieseArbeitsmappe, dann wird er beim Aktivieren jedes Tabellenblattes ausgeführt, was aber nicht notwendig ist, denn nach dem Einfügen eines neuen Blattes muss ja das Tabellenblatt mit dem DropDown erneut aktiviert werden.


Anzeige
AW: Dropdown erstellen mit Tabellenblättern als Inhalt
28.05.2014 18:14:17
Shayev
Hallo Karin,
vielen Dank für deine Unterstützung!! :) Ich habe es mit einem allgemeneim Modul geschafft, wenn ich ein neues Arbeitsblatt einfüge, dann wird der Name dieses Arbeitsblattes auch in meiner Tabelle zurückgegeben, woraus dann mein Dropdown erstellt wird! Das Dropdown Menü ist dynamisch, habe ich mit der Bereich.Verschieben Funktion gelöst! Wenn ich die Tabellenblätter umbennene werden diese im nachhinein auch in der Tabelle mit den Daten für das Dropdown Menü geändert!
Gruß Shayev

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige