PDA

Vollständige Version anzeigen : Tabellenblatt über Dropdown löschen


roland889
14.07.2014, 11:45
Hallo,

Ich habe hier folgendes Makro mit dem ich eingeben kann welches Tabellenblatt aus der Mappe gelöscht werden soll

Sub Tabellenblatt_entfernen()
Dim WS As Worksheet
Dim Hinweis As Byte
Dim StrName As String
StrName = InputBox("Geben Sie den Tabellennamen ein, welchen Sie löschen wollen." _
& Chr(13) & "Achten Sie auf Gross- und Kleinschreibung!")
For Each WS In Worksheets
If WS.Name = StrName Then
Hinweis = MsgBox("Möchten Sie das Tabellenblatt " & StrName _
& " wirklich löschen?", 1, "Achtung")
If Hinweis = 1 Then
Application.DisplayAlerts = False
Worksheets(StrName).Delete
Application.DisplayAlerts = True
Else
Exit Sub
End If
End If
Next WS
End Sub

Meine frage ist, ist es möglich anstelle dass man den Namen des Tabellenblattes eingibt, sich über ein Dropdown das Blatt welches man löschen will auswählen kann? Falls ja kann mir einer bitte sagen wie das funktioniert?

aloys78
14.07.2014, 13:38
Hallo Roland,

eine Möglichkeit
- Dropdown über Menu Daten / Datenüberprüfung mit Liste definieren
- die Liste enthält die Namen der in Frage kommenden Tab-Blätter
- bei Auswahl eines Namens wird ein Worksheet_Change Ereignis ausgelöst.

Gruß
Aloys

EarlFred
14.07.2014, 14:02
Hallo,

simples Beispiel mit einer Userform, die einen Commandbutton und eine Combobox enthält:
Option Explicit

Private Sub UserForm_Initialize()
init_Combobox
End Sub

Private Sub CommandButton1_Click()
If Me.ComboBox1.ListIndex > -1 And ThisWorkbook.Worksheets.Count > 1 Then
If MsgBox( _
Prompt:="Möchten Sie das Tabellenblatt """ & Me.ComboBox1.Value & """ wirklich löschen?", _
Buttons:=vbCritical + vbYesNoCancel, _
Title:="Achtung") _
= vbYes Then
Application.DisplayAlerts = False
Worksheets(Me.ComboBox1.Value).Delete
Application.DisplayAlerts = True
init_Combobox
Else
Exit Sub
End If
End If
End Sub

Private Sub init_Combobox()
Dim ws As Worksheet
Me.ComboBox1.Clear
For Each ws In ThisWorkbook.Worksheets
Me.ComboBox1.AddItem ws.Name
Next ws
End Sub

Habe die Standardnamen beibehalten, man würde diese sinnvollerweise durch sprechende Namen ersetzen.

Die UF muss dann noch mit einem Codeeinzeiler aufgerufen und wieder geschlossen werden.

Grüße
EarlFred

roland889
14.07.2014, 14:06
sry ich habe mit Comboboxen noch gar nicht gearbeitet, und stehe gerade etwas auf dem schlauch, wo muss ich den Code einfügen?

Die UF muss dann noch mit einem Codeeinzeiler aufgerufen und wieder geschlossen werden.


was meinst du mit UF?

EarlFred
14.07.2014, 14:06
Hallo Name?,

UserForm

Grüße
EarlFred

roland889
14.07.2014, 15:22
Blöde frage, wo muss ich den Code einfügen? wenn ich UF erstelle und dort den Code einfüge bekomme ich die Fehlermeldung

Fehler beim Kompiieren:
Methode oder Datenobjekt nicht gefunden

bei

Me.ComboBox1.Clear

EarlFred
14.07.2014, 15:29
Hallo ,

in der ersten Zeile meiner Erläuterung steht etwas von einer Combobox und einem Commandbutton. Die hast Du in der Userform erstellt? Und die heißen auch, wie im Code angegeben?

Grüße
EarlFred

roland889
14.07.2014, 15:50
Ah ok mein fehler hab bei beiden die 1 weg gelassen.

Kann ich die Userform auch auf einem Tabellenblatt einbetten?

So habe ich die UF ja nur im Modul

roland889
15.07.2014, 14:02
Eine frage noch, ist es möglich sich über eine UF alle vorhandenen Makros aufzuzeigen? Und mit einem Button auszuführen? Falls ja, wie würde das funktionieren?

EarlFred
15.07.2014, 14:06
Hallo grußloser Ohnenamler,

die Makroliste ist über Alt+F8 erreichbar. Es gibt allerdings einige Makros, die dort nicht aufgeführt sind.

Alles andere erfordert viel VBA oder ein bisschen Mühe beim Googeln. Sowas ähnliches gab's (unter anderem) hier nämlich schonmal.

Grüße
EarlFred