online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon ponscho vom 25.04.2022, 11:49 Options

Lösung

Makro Tabellenblatt auswählen und löschen?

Hallo an alle Forumsmitglieder!

Habe die Suche schon benutz aber nichts gefunden.

Ich bräuchte ein Makro, womit ich ein Tabellenblatt aus einer Liste auswähle und beim anklicken gelöscht wird.

Habe es schon mit "wait" was ich im Inet gefunden habe probiert, aber es funktioniert nicht, da ich in der Wartezeit nichts auswählen kann.

Sub Loeschen()
Application.DisplayAlerts = False
ActiveWindow.DisplayWorkbookTabs = True
    Application.Wait Now + TimeValue("00:00:05")
    ActiveWindow.DisplayWorkbookTabs = False
Application.DisplayAlerts = True
End Sub


Vielen Dank schonmal und Internette Grüsse


Antwort schreiben

Antwort 1 von Hajo_Zi vom 25.04.2022, 12:06 Options

Hallo Unbekante(r),

warum benutzt Du nicht die rechte Maustaste beim Register? Warum Wait?

Gruß Hajo

Antwort 2 von ponscho vom 25.04.2022, 12:14 Options

Hallo Hajo!

Ganz kurz erklärt, ich betreibe Ahnenforschung und erstelle Familienblätter (Paarungen verschiedener Geburtsnamen).
Klar, noch ist es übersichtlich! Doch wenn mehr als, was ich doch hoffe, 100 Paarungen zusammenkommen, wird es unten in der Leiste sehr unübersichtlich.
Deswegen wäre es toll, wenn so eine Art Liste aufgeht in der ich eine Paarung (Tabellenblatt "Geburtsname1 - Geburtsname2_oo Jahr") beim anwählen löschen könnte.

Internette Grüsse
Mick

Antwort 3 von nighty vom 25.04.2022, 12:51 Options

hi all ^^

ein beispiel

gruss nighty

ueber das Workbook_Open() ereigniss wird ein listenfeld auf tabelle1 zelle b1 erstellt,mit den namen der worksheets

einzufuegen
alt+f11/projektexplorer/DeineArbeitsMappe

Zitat:
Private Sub Workbook_Open()
With Worksheets("Tabelle1").Range("B1").Validation
.Delete
For WksNamen = 1 To Worksheets.Count
If WksNamen < Worksheets.Count Then
NamenSammeln = NamenSammeln & Worksheets(WksNamen).Name & ","
Else
NamenSammeln = NamenSammeln & Worksheets(WksNamen).Name
End If
Next WksNamen
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=NamenSammeln
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub


einzufuegen
alt+f11/projektexplorer/DeineTabelle

ueber das Worksheet_Change() ereigniss wird aus b1 der name des zu loeschenden worksheets ausgelesen und das ausgewaehlte worksheet geloescht

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column = 2 And Target.Row = 1 Then
        Application.DisplayAlerts = False
        Worksheets("" & Cells(1, 2)).Delete
        Application.DisplayAlerts = True
    End If
    Application.EnableEvents = True
End Sub  

Antwort 4 von ponscho vom 25.04.2022, 13:22 Options

Hallo nighty!

Jetzt bin ich etwas durcheinander!

Meine Struktur im Explorer sieht so aus:

VBAProject (0000_Ahnenforschung Familienblatt.xls)
Microsoft Excel Objekte
DieseArbeitsmappe
Tabelle1 (Startseite)
Tabelle2 (Vorlage)
Tabelle3 (Namen_Orte)
Tabelle4 (Wi**n_oo_K**se)
Tabelle5 (Namen_Orte)
Tabelle6 (Be**d_o_Wi**n)
Tabelle7 (Wi**n_oo_Sp**r)
Tabelle8 (Be**dt_oo_Wu**e)
Tabelle9 (K**se_oo_El**yk)
Module

Wobei Tabelle 2 & 3 ausgeblendet sind.
O.k. das habe ich verstanden, dies in "DieseArbeitsmappe"

Private Sub Workbook_Open()
With Worksheets("Tabelle1").Range("B1").Validation
.Delete
For WksNamen = 1 To Worksheets.Count
If WksNamen < Worksheets.Count Then
NamenSammeln = NamenSammeln & Worksheets(WksNamen).Name & ","
Else
NamenSammeln = NamenSammeln & Worksheets(WksNamen).Name
End If
Next WksNamen
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=NamenSammeln
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub 


Aber dies nicht und wie führe ich das aus? mit einem ClickButton?

"DeineTabelle"
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column = 2 And Target.Row = 1 Then
        Application.DisplayAlerts = False
        Worksheets("" & Cells(1, 2)).Delete
        Application.DisplayAlerts = True
    End If
    Application.EnableEvents = True
End Sub  


Internette Grüsse
Mick

Antwort 5 von nighty vom 25.04.2022, 13:57 Options

hi mick ^^

im projektexplorer siehst du deine tabellen,dort deine tabelle doppelclick und code einfuegen

jetzt ist auf b1 der zuvor ausgewaehlten tabelle ein automatismus erstellt worden,der auf inhaltswechsel von b1 wirkt

der tabellennamen wie auch die zelle vom ersten makro muessen angepasst werden

eine aktualiesierung ist zur zeit nicht integriert,liesse sich aber leicht aendern,wenn es so gewuenscht sein sollte

gruss nighty

Antwort 6 von ponscho vom 25.04.2022, 14:02 Options

Hallo nighty!

Erstmal Danke für Deine Unterstützung!
irgendwie hatte ich es rausgefunden, aber Du hast schneller geantwortet ;o)

Nun habe ich das nächste Problem, irgendetwas beisst sich da. Deswegen habe ich mal eine Test-Datei hochgeladen.

*hier klicken*

Internette Grüsse
Mick

Antwort 7 von nighty vom 25.04.2022, 14:07 Options

hi mick ^^

mit aktualiesierung koennte es so aussehen

gruss nighty

einzufuegen
alt+f11/projektexplorer/DeineArbeitsMappe

Private Sub Workbook_Open()
   Call Liste_Einlesen
End Sub  


einzufuegen
alt+f11/projektexplorer/AllgemeinesModul

Sub Liste_Einlesen()
    With Worksheets("Tabelle1").Range("B1").Validation
        .Delete
        For WksNamen = 1 To Worksheets.Count
            If WksNamen < Worksheets.Count Then
                NamenSammeln = NamenSammeln & Worksheets(WksNamen).Name & ","
            Else
                NamenSammeln = NamenSammeln & Worksheets(WksNamen).Name
            End If
        Next WksNamen
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=NamenSammeln
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub  


einzufuegen
alt+f11/projektexplorer/DeineTabelle

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column = 2 And Target.Row = 1 Then
        Application.DisplayAlerts = False
        Worksheets("" & Cells(1, 2)).Delete
        Call Liste_Einlesen
        Application.DisplayAlerts = True
    End If
    Application.EnableEvents = True
End Sub  

Antwort 8 von nighty vom 25.04.2022, 14:13 Options

hi mick ^^

du hattest meinen und deinen code vermischt :-)))

die letzte variante duerfte es ueberschaubarer machen und vielleicht fehlerfreier einzufuegen :-)

gruss nighty

Antwort 9 von ponscho vom 25.04.2022, 14:33 Options

Hmm!

Jetzt habe ich einen

Laufzeitfehler '1004':
Anwendungs- oder objektdefinierter Fehler

in dieser Zeile

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=NamenSammeln

Irgendwas mach ich doch verkehrt?

Internette Grüsse
Mick

Antwort 10 von ponscho vom 25.04.2022, 14:48 Options

o.k. jetzt funktionierts irgendwie ohne Laufzeitfehler, aber das ausgewählte Blatt wird nicht gelöscht?

Internette Grüsse
Mick

Antwort 11 von ponscho vom 25.04.2022, 15:02 Options

Hallo nighty!

Leider gibt es keinen Edit-Button. Wie gesagt, das ausgewählte Blatt wird nicht gelöscht.

wenn ich noch einen Wunsch äußern dürft, das man bei der Auflistung diese Arbeitsblätter auslassen könnte?
Tabelle1 (Startseite)
Tabelle2 (Vorlage)
Tabelle3 (Namen_Orte)

Internette Grüsse
Mick

Antwort 12 von nighty vom 26.04.2022, 10:16 OptionsLösung

Lösung
hi mick ^^

wie gewünscht :-))

gruss nighty

dein fehler war im Worksheet_Change ereigniss zu finden

Target.Row =1


statt

Target.Row =5


Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column = 2 And Target.Row =5 Then
        Application.DisplayAlerts = False
        Worksheets("" & Cells(5, 2)).Delete
        Call Liste_Einlesen
        Application.DisplayAlerts = True
    End If
    Application.EnableEvents = True
End Sub    


das allgemeine modul mit ausschluss der genannten worksheetsnamen geaendert

Sub Liste_Einlesen()
    With Worksheets("Startseite").Range("B5").Validation
        .Delete
        For WksNamen = 1 To Worksheets.Count
            If Worksheets(WksNamen).Name <> "Startseite" And Worksheets(WksNamen).Name <> "Vorlage" And Worksheets(WksNamen).Name <> "Namen_Orte" Then
                If WksNamen < Worksheets.Count Then
                    NamenSammeln = NamenSammeln & Worksheets(WksNamen).Name & ","
                Else
                    NamenSammeln = NamenSammeln & Worksheets(WksNamen).Name
                End If
            End If
        Next WksNamen
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=NamenSammeln
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub  

Antwort 13 von ponscho vom 28.04.2022, 18:37 Options

Hallo nighty,

entschuldige bitte! kam die Tage nicht vor den Rechner und konnte Dir noch nicht antworten.

Funktioniert super!! Danke! Aber wie funktioniert das mit der Aktualisierung, wenn ein neues Blatt dazukommt?
Weil es in der Drop-Down-Liste nicht angezeigt wird.

Internette Grüsse
Mick

Antwort 14 von nighty vom 28.04.2022, 19:49 Options

hi mick ^^

fuer die aktualisierung

das neue blatt wurde glaube ich mit einem button eingefuegt

schreibe in dessen code am ende

Call Liste_Einlesen  


gruss nighty

Ähnliche Themen

Tabellenblatt kopieren, aber ohne Makro
hpt  11.03.2009 - 948 Hits - 6 Antworten

Tabellenblatt per Makro wechseln
afetinci  06.04.2009 - 202 Hits - 2 Antworten

im Excel Makro Datei zum öffnen auswählen
andreas_3  24.04.2009 - 749 Hits - 2 Antworten

In Makro auf anderes Tabellenblatt verweisen
Nopummel  22.05.2009 - 340 Hits - 8 Antworten

Makro Autofilter auswählen
darockwider  18.01.2010 - 157 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 11:26:25 2026