Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1804to1808
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

Makro Tabblatt löschen

Makro Tabblatt löschen
21.01.2021 17:33:05
Mildred
Hallo zusammen,
ich habe ein Makro, dass Tabellenblätter kopiert wenn in einem Tabellenblatt in 8 verschiedenen Zellen etwas eingegeben wird. Gleichzeitig soll das Makro die angelegten Tabellenblättern löschen, wenn man in einer der Zellen den Zellinhalt löscht. Das Kopieren und Anlegen der Tabellenblätter klappt wunderbar. Wenn nun aber die angelegten Tabellenblätter gelöscht werden sollen, klappt das bei 2 angelegten Tabellenblättern, aber bei den weiteren dann nicht mehr. Das Makro springt scheinbar an irgendeiner Stelle ab, sodass es nicht mehr prüft, ob noch weitere Zellen geleert wurden und somit noch weitere Tabellenblätter gelöscht werden sollen. Damit das Problem vielleicht klarer wird, habe ich eine Datei hochgeladen.
https://www.herber.de/bbs/user/143204.xlsm
Vielen Dank schon mal vorab für eure Hilfe.
V.G. Mildred

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Tabblatt löschen
21.01.2021 19:09:12
Yal
Hallo Mildred,
die Initialisierung der Variable Nam findet nach dem If statt, aber diese Variable wird im Else verwendet. Das kann nicht gut gehen. Versetze die Initialisierung vor dem If.
Vieles wird wiederholt. Lagert diese Code-Wiederholung in separaten sub/Function. Auch einige Code kann damit gekürzt werden:
For Each ws In ThisWorkbook.Worksheets
If ws.Name = mstrSheetname Then
If MsgBox("Tabellenblatt mit Name """ & mstrSheetname & """ wirklich löschen ?",  _
vbYesNo) = vbYes Then
Application.DisplayAlerts = False
ws.Delete
End If
Exit For
End If
Next ws
sollte man in
If WS_exists(mstrSheetname) Then Blatt_loeschen (mstrSheetname)
Private Function WS_exists(BlattName As String) As Boolean
'Gibt falsch zurück, wenn WS nicht existiert
On Error Resume Next
WS_exists = Len(Worksheets(BlattName).Name) > 0
End Function
Private Sub Blatt_loeschen(BlattName As String, Optional Mitbetätigung = True)
Dim Cancel As Boolean
If Mitbetätigung Then
Cancel = Not (MsgBox("Tabellenblatt mit Name """ & BlattName & """ wirklich löschen ?",  _
vbYesNo) = vbYes)
End
If Not Cancel Then
Application.DisplayAlerts = False
Worksheets(BlattName).Delete
Application.DisplayAlerts = True
End If
End Sub
Es mag scheinbar länger zu sein, aber nur den Aufruf wird je wiederholt. Die Sub/Function sind nur einmal definiert.
VG
Yal
Anzeige
AW: Makro Tabblatt löschen
21.01.2021 20:25:49
Mildred
Hallo Yal,
vielen Dank für deine Hilfe. Leider kenne ich mich mit Makros nicht sehr gut. Deswegen weiß ich nicht, was du mit
"die Initialisierung der Variable Nam findet nach dem If statt, aber diese Variable wird im Else verwendet. Versetze die Initialisierung vor dem If."
und
"Auslagern von Code-Wiederholungen in "separaten sub/Functionin"
meinst.
Ich habe den Code versucht anhand deiner Angaben zu verändern (fett markiert), es hat sich allerdings nichts geändert. 2 Blätter werden gelöscht, der Rest dann nicht mehr, obwohl der Inhalt der Zellen geleert wird. Der komplette Code sieht jetzt wie folgt aus:
Option Explicit
Dim Nam As String
Dim mstrSheetname As String
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Fehler As Integer, ws As Object
If Target.Column = 5 Then
Select Case Target.Row
Case 12, 18, 24, 30
If Not IsEmpty(Target.Cells(1, 1).Value) Then
mstrSheetname = Left(Replace(Target.Cells(1, 1), "/", " "), 30)
If MsgBox("Tabelenblatt mit Name """ & Target.Text & """ anlegen ?", _
vbYesNo, "Blatt Vorlage kopieren") = vbYes Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name = mstrSheetname Then
MsgBox "Blatt mit dem eingegeben Namen " & mstrSheetname _
& " existiert bereits!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Target.Offset(1).Select
Exit Sub
End If
Next
Application.ScreenUpdating = False
With Worksheets("Kalkulationsvorlage")
.Visible = xlSheetVisible
.Copy Before:=Worksheets("Kalkulationsvorlage")
.Visible = xlSheetVeryHidden
End With
ActiveSheet.Name = mstrSheetname
End If
Else
 If WS_exists(mstrSheetname) Then Blatt_loeschen (mstrSheetname)
End If
Case Else
End Select
End If
If Target.Column = 5 Then
Select Case Target.Row
Case 17, 23, 29, 35
If Not IsEmpty(Cells(Target.Row, 5).Value) Then
Nam = Left(Replace("ICTP " & Cells(Target.Row - 5, 5), "/", " "), 25)
If MsgBox("Tabellenblatt mit Name " & Nam & " anlegen ?", _
vbYesNo, "Blatt Vorlage kopieren") = vbYes Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Nam Then
MsgBox "Blatt mit dem eingegeben Namen " & Nam _
& " existiert bereits!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Target.Offset(1).Select
Exit Sub
End If
Next
Application.ScreenUpdating = False
With Worksheets("PRELIMINARY STANDARD")
.Visible = xlSheetVisible
.Copy Before:=Worksheets("PRELIMINARY STANDARD")
.Visible = xlSheetVeryHidden
End With
ActiveSheet.Name = Nam
End If
Else
If WS_exists(Nam) Then Blatt_loeschen (Nam)
End If
Case Else
End Select
End If
Worksheets("Deckblatt Pos 1-4").Select
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim mstrSheetname As String
Dim Nam As String
If Target.Column = 5 Then
Select Case Target.Row
Case 12, 18, 24, 30
mstrSheetname = Left(Replace(Target.Cells(1, 1), "/", " "), 30)
Case Else
End Select
End If
If Target.Column = 5 Then
Select Case Target.Row
Case 17, 23, 29, 35
Nam = Left(Replace("ICTP " & Cells(Target.Row - 5, 5), "/", " "), 25)
Case Else
End Select
End If
End Sub

Private Function WS_exists(BlattName As String) As Boolean
'Gibt falsch zurück, wenn WS nicht existiert
On Error Resume Next
WS_exists = Len(Worksheets(BlattName).Name) > 0
End Function

Private Sub Blatt_loeschen(BlattName As String, Optional Mitbetätigung = True)
Dim Cancel As Boolean
If Mitbetätigung Then
Cancel = Not (MsgBox("Tabellenblatt mit Name """ & BlattName & """ wirklich löschen ?",  _
_
vbYesNo) = vbYes)
End If
If Not Cancel Then
Application.DisplayAlerts = False
Worksheets(BlattName).Delete
Application.DisplayAlerts = True
End If
End Sub

V.G. Mildred
Anzeige
AW: Makro Tabblatt löschen
22.01.2021 00:03:51
Yal
Hallo Mildred,
anbei das gesamte bereinigte Code für "Deckblatt Pos 1-4". Mehr braucht es nicht. Bisherige Code komplett löschen und diese eintragen.
Wiederkehrende Aufgabe wie Blatt_loeschen, Blatt_Duplizieren habe ich mit Steuerungsparameter "Vorlage" und "NeuerName" als separate Prozedure (Sub oder Function) abgelegt. Auch die Prüfung,ob eine Blatt existiert ist separat, weil hier ausgenutzt wird, dass der Aufruf eine nicht existierende Blatt ein Fehler verursacht absichtlich ausgenutz wird ("On Error Resume Next"). Solche Besonderheiten sollte man isolieren.
Darüber hinaus ist es geprüft, dass jedesmal, dass es ein DisplayAlerts= False gibt, am Ende auch einen DisplayAlerts = True stattfindet. Das gleich mit ScreenUpdating. Das scheint der Grund zu sein, warum beim zweiten Löschung nichts mehe tat: EnableEvents war ausgeschaltet.
Nur ein Punkt habe ich angefasst, und in der Logik geändert (das siehst Du in dem IsEmpty von Case 12,18,24,30): BITTE genau prüfen, ob es die Erwartung trifft:
Wenn die erste Zeile eines Blockes (grüne Zelle) geleert wird, dann werden das dazu passende Kalkulationsblatt UND das dazu passende Preliminary-Blatt gelöscht.
Ansonsten wäre der Referenzname im grüne Zelle weg und das dazu gehörende Blatt aus der gelbe Zelle wäre nicht mehr zu löschen.
Wenn die letzte Zeile (Gelbe Zelle) geleert wird, dann wird nur das dazu passende Preliminary-Blatt gelöscht. Wie vorher.
Sollte dies nicht erwünscht sein, im folgende Block
        'wenn die geänderte Zelle leer ist
If IsEmpty(Target.Value) Then
If WS_exists(W_Prelim) Then Blatt_loeschen (W_Prelim)
If WS_exists(W_Kalk) Then Blatt_loeschen (W_Kalk)
Else
Die Zeile mit W_Prelim löschen.
Da ich nur beschränkte möglichkeit habe zu testen, kann ich nicht sicherstellen, dass alles funktioniert, bin aber zuversichtlich.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim W_Kalk As String
Dim W_Prelim As String
Application.EnableEvents = False
If Target.Column = 5 Then
Select Case Target.Row
Case 12, 18, 24, 30
W_Kalk = Left(Replace(Target.Text, "/", " "), 30)
W_Prelim = Left(Replace("ICTP " & Target.Text, "/", " "), 25)
'wenn die geänderte Zelle leer ist
If IsEmpty(Target.Value) Then
If WS_exists(W_Prelim) Then Blatt_loeschen (W_Prelim)
If WS_exists(W_Kalk) Then Blatt_loeschen (W_Kalk)
Else
Blatt_duplizieren "Kalkulationsvorlage", W_Kalk
End If
Case 17, 23, 29, 35
W_Prelim = Left(Replace("ICTP " & Cells(Target.Row - 5, 5), "/", " "), 25)
'wenn die Zelle in Spalte 5 der geänderte Zeile leer ist
If IsEmpty(Cells(Target.Row, 5).Value) Then
If WS_exists(W_Prelim) Then Blatt_loeschen (W_Prelim)
Else
If WS_exists(W_Prelim) Then
Application.Undo
Target.Offset(1).Select
MsgBox "Blatt mit dem eingegeben Namen " & W_Prelim & " existiert bereits!"
Else
Blatt_duplizieren "PRELIMINARY STANDARD", W_Prelim
End If
End If
Case Else
End Select
End If
Worksheets("Deckblatt Pos 1-4").Activate
Application.EnableEvents = True
End Sub
Private Function WS_exists(BlattName As String) As Boolean
'Gibt falsch zurück, wenn WS nicht existiert
On Error Resume Next
WS_exists = Len(Worksheets(BlattName).Name) > 0
End Function
Private Sub Blatt_duplizieren(Vorlage, BlattNeuerName)
Application.ScreenUpdating = False
With Worksheets(Vorlage)
.Visible = xlSheetVisible
.Copy Before:=Worksheets(Vorlage)
.Visible = xlSheetVeryHidden
End With
ActiveSheet.Name = BlattNeuerName
Application.ScreenUpdating = True
End Sub
Private Sub Blatt_loeschen(BlattName As String, Optional Mitbetätigung = True)
Dim Cancel As Boolean
If Mitbetätigung Then
Cancel = Not (MsgBox("Tabellenblatt mit Name """ & BlattName & """ wirklich löschen ?",  _
vbYesNo) = vbYes)
End If
If Not Cancel Then
Application.DisplayAlerts = False
Worksheets(BlattName).Delete
Application.DisplayAlerts = True
End If
End Sub

Viel Erfolg
Yal
Anzeige
AW: Makro Tabblatt löschen
22.01.2021 08:48:21
Mildred
Guten Morgen Yal,
vielen Dank für deine Rückmeldung, leider gibt es ein Problem mit dem Kopieren der Tabellenblätter "PRELIMINARY STANDARD" + "Kalkulationsvorlage". Das klappt leider nicht mehr. Wenn ich es richtig sehe, geht es um folgenden Teil (bin mir aber nicht sicher) an welcher Stelle das Makro hängt.
Private Sub Blatt_duplizieren(Vorlage, BlattNeuerName)
Application.ScreenUpdating = False
With Worksheets(Vorlage)
.Visible = xlSheetVisible
.Copy Before:=Worksheets(Vorlage)
.Visible = xlSheetVeryHidden
End With
ActiveSheet.Name = BlattNeuerName
Application.ScreenUpdating = True
End Sub
Ich habe mehrere Sachen ausprobiert. Ich dachte vielleicht das es an dem Wort "Vorlage" liegt, deswegen habe ich Vorlage durch "Kalkulationsvorlage" ersetzt, dann hatte ich überlegt, ob es evtl. am "BlattNeuerName" liegt, deswegen habe ich den Namen durch W_Kalk ersetzt, aber irgendwie finde ich den Fehler nicht.
Würde mich über eine Rückmeldung freuen.
V.G. Mildred
Anzeige
AW: Makro Tabblatt löschen
22.01.2021 09:07:47
ralf_b
das makro hängt genau da wo der gelb markierte Bereich ist. Und es gibt im Normalfall eine Fehlermeldung. Wie wäre es wenn du diese Informartionen lieferst?
gruß
rb
AW: Makro Tabblatt löschen
22.01.2021 09:19:49
Mildred
Hallo Ralf,
das hätte ich gerne gemacht, nur wird der Bereich nicht gelb markiert. Es tut sich nichts. Ich gebe etwas in den entsprechenden Zellen ein und dann wars das. Es kommt keine Fehlermeldung.
V.G. Mildred
AW: Makro Tabblatt löschen
22.01.2021 09:43:41
ralf_b
dann "hängt" das Makro auch nicht.
AW: Makro Tabblatt löschen
22.01.2021 09:43:47
Yal
Hallo Mildred,
ich habe gerade gesehen, dass das gesamt auch startet, wenn die Zelle für Blatt-Name leer ist.
Da ist noch ein paar Nacharbeit notwendig. Werde aber heute kaum Zeit zur Verfügung haben. Da muss Du Dir gedulden, oder hoffen, dass ein Kollege übernimmt.
VG
Yal
Anzeige
AW: Makro Tabblatt löschen
22.01.2021 19:08:10
Yal
Halo Mildred,
anbei die Version mit Prüfung der Gültigkeit der gewünschte Blattname.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim W_Kalk As String
Dim W_Prelim As String
Application.EnableEvents = False
If Target.Column = 5 Then
Select Case Target.Row
Case 12, 18, 24, 30
If Leername_prüfen(Target) Then Exit Sub
W_Kalk = Trim(Left(Replace(Target.Text, "/", " "), 30))
W_Prelim = Trim(Left(Replace("ICTP " & Target.Text, "/", " "), 25))
'wenn die geänderte Zelle leer ist
If IsEmpty(Target.Value) Then
If WS_exists(W_Prelim) Then Blatt_loeschen (W_Prelim)
If WS_exists(W_Kalk) Then Blatt_loeschen (W_Kalk)
Else
Blatt_duplizieren "Kalkulationsvorlage", W_Kalk
End If
Case 17, 23, 29, 35
W_Prelim = Left(Replace("ICTP " & Target.Offset(-5, 0).Text, "/", " "), 25)
If Leername_prüfen(Target.Offset(-5, 0)) Then Exit Sub
'wenn die Zelle in Spalte 5 der geänderte Zeile leer ist
If IsEmpty(Cells(Target.Row, 5).Value) Then
If WS_exists(W_Prelim) Then Blatt_loeschen (W_Prelim)
Else
If WS_exists(W_Prelim) Then
Application.Undo
Target.Offset(1).Select
MsgBox "Blatt mit dem eingegeben Namen " & W_Prelim & " existiert bereits!"
Else
Blatt_duplizieren "PRELIMINARY STANDARD", W_Prelim
End If
End If
Case Else
End Select
End If
Worksheets("Deckblatt Pos 1-4").Activate
Application.EnableEvents = True
End Sub
Private Function Leername_prüfen(Zelle As Range) As Boolean
If Trim(Zelle.Text) = "" Then
MsgBox "Im Zelle " & Target.Address(False, False) & "ist kein gültige Name vorhanden.",  _
vbCritical
Leername_prüfen = True
End
End Function
Private Function WS_exists(BlattName As String) As Boolean
'Gibt falsch zurück, wenn WS nicht existiert
On Error Resume Next
WS_exists = Len(Worksheets(BlattName).Name) > 0
End Function
Private Sub Blatt_duplizieren(Vorlage, BlattNeuerName)
Application.ScreenUpdating = False
With Worksheets(Vorlage)
.Visible = xlSheetVisible
.Copy Before:=Worksheets(Vorlage)
.Visible = xlSheetVeryHidden
End With
ActiveSheet.Name = BlattNeuerName
Application.ScreenUpdating = True
End Sub
Private Sub Blatt_loeschen(BlattName As String, Optional Mitbetätigung = True)
Dim Cancel As Boolean
If Mitbetätigung Then
Cancel = Not (MsgBox("Tabellenblatt mit Name """ & BlattName & """ wirklich löschen ?",  _
vbYesNo) = vbYes)
End If
If Not Cancel Then
Application.DisplayAlerts = False
Worksheets(BlattName).Delete
Application.DisplayAlerts = True
End If
End Sub
VG
Yal
Anzeige
AW: Makro Tabblatt löschen
22.01.2021 20:26:31
Mildred
Hallo Yal,
vielen Dank für den Code. Das folgende Makro macht leider Probleme. Es kommt die Fehlermeldung, dass die Variable nicht defniert ist. Leider weiß ich nicht, um welche Variable es geht. Ich hatte gedacht, dass es nur die 2 Variablen "W_Kalk" + "W_Prelim" gibt.
Private Function Leername_prüfen(Zelle As Range) As Boolean
If Trim(Zelle.Text) = "" Then
MsgBox "Im Zelle " & Target.Address(False, False) & "ist kein gültige Name  _
vorhanden.", _
vbCritical
Leername_prüfen = True
End
End Function
Viele Grüße
Mildred
Anzeige
ersetze Target durch Zelle owt
22.01.2021 20:30:54
ralf_b
AW: ersetze Target durch Zelle owt
22.01.2021 21:18:42
Mildred
Hallo Ralf,
danke für deine Hilfe. Grundsätzlich funktioniert das Makro jetzt, aber ich befürchte, dass es keine gute Idee war, einzelne Codes auszulagern. Wenn bei einem Code etwas nicht funktioniert, dann funktionieren die anderen auch nicht mehr. Es geht darum, dass bei der Eingabe in verschiedenen Zellen Tabellenblätter kopiert werden und mit einem neuen Namen angelegt werden. Gleichtzeitig sollte man aber auch die Möglichkeit haben, die angelegten Tabellenblätter zu löschen, wenn man die Eingabe wieder entfernt. Bei dem letzten Teil hatte ich ein Problem, dennoch wurden weiterhin die Tabellenblätter kopiert. Das passiert jetzt leider nicht mehr.
Bei dem oben aufgeführten Code, poppt, wenn die Zelle geleert wird, eine Fehlermeldung auf, das kein gültiger Name exisitiert. Und danach funktioneren die anderen Codes nicht mehr, z.B. werden die Tabellenblätter nicht mehr kopiert.
V.G. Mildred
Anzeige
AW: ersetze Target durch Zelle
22.01.2021 22:09:58
Yal
Hallo Mildred,
es gibt eine Menge Leute, die in den letzten 60 Jahren gemeint habe, es ist durchaus ein gute Idee, einzelne Codes auszulagern. Die nennt man Programmierer.
Sarkasmus beiseite, es tut aufrichtig Leid, dass es nicht funktioniert wie erwartet. Ich habe versucht, mit bestem Wissen und Gewissen das Vorhaben zu verstehen, aber es scheint nicht ausreichend zu sein.
Was Du jetzt brauchst, ist jemand, der über deine Schulter schauen kann/darf und den Code in Zusammenhang mit der befüllte oder nicht befüllte Zelle beurteilen kann. Weil so lang ich keine "lebende" Application vor mir habe, kann ich mir nur eine Vorstellung davon machen. Und es scheint nicht ausreichend zu sein.
Nur eine letzte Hinweis: diese Prüfung sagt "Im Zelle xy ist keine gültige name vorhanden". Eigentlich sollte es heissen: gar keine Name vorhanden (weil leer). Die Adresse ist Dir dabei mitgeteilt, dann füge einen gültigen Namen in diese benannte Zelle und es ollte weiter gehen können.
Private Function Leername_prüfen(Zelle As Range) As Boolean
If Trim(Zelle.Text) = "" Then
MsgBox "Im Zelle " & Zelle.Address(False, False) & "ist kein gültige Name  _
vorhanden.", _
vbCritical
Leername_prüfen = True
End
End Function
VG Yal
Anzeige
AW: ersetze Target durch Zelle
23.01.2021 14:23:52
Manuela
Hallo Yal,
vielen Dank für deine Hilfe. Du hast natürlich vollkommen recht, jemand der sich mit Makros fast gar nicht auskennt, sollte Vorschläge von Profis nicht in Frage stellen, sorry. Das war von mir nicht bös gemeint. Ich bin allen im Forum dankbar, die mir bei meinen Makros helfen. Ich wollte nicht als undankbar erscheinen, ganz im Gegenteil, wenn ihr mich bei meinem Makro nicht unterstützt hättet, wäre ich überhaupt nicht so weit gekommen.
Ich werde mich weiter an dem Makro versuchen.
V.G. Mildred
AW: ersetze Target durch Zelle
23.01.2021 21:03:23
Yal
Hallo Mildred,
Ich wollte nicht böse oder irritiert wirken, ich bitte um Entschuldigung.
Üblicherweise sind die Ratschläge im Forum nur eine Hilfestellung, die von dem betroffenen weiterentwickelt werden. In deinem Fall hast Du nicht die Möglichkeit, diese weiterzuentwickeln. Es ist keinesfalls dein Schuld, aber es blockiert die Lösungsfindung und frustriert.
Ich habe mich kurz gehen lassen. Ich passe nächste Mal auf. Versprochen.
VG
Yal
AW: Makro Tabblatt löschen
22.01.2021 00:12:41
Peter
Hallo Mildred,
bevor ich mich durch diese langen Makros quäle, möchte ich Dir lieber einen völlig neuen Lösungsvorschlag unterbreiten.
https://www.herber.de/bbs/user/143210.xlsm
Die in den Zellen A4 bis A9 genannten Namen können selbstverständlich durch andere Begriffe ersetzt werden. Danach werden dann die Tabellenblätter angelegt und benannt bzw. gelöscht. In den Zellen E17, E29, usw. können dieselben Begriffe in beliebiger Reihenfolge eingegeben oder gelöscht werden. Sobald man hier eine Änderung gemacht hat, wird man aufgefordert, durch Klick auf den Button zu aktualisieren. Man kann aber zunächst alle Änderungen eingeben und braucht dann nur ein Mal zu aktualisieren.
In dem Block von M1 bis Q9 sind einige Angaben für das Operating vorhanden, die vom Programm automatisch erstellt werden.
Bitte mal ausprobieren, Rückmeldung wäre schön.
Mit freundlichem Gruß
Peter Kloßek
AW: Makro Tabblatt löschen
22.01.2021 09:05:18
Mildred
Hallo Peter,
vielen Dank für deine Mühe. Ich habe gesehen, dass du das ursprüngliche Makro komplett geändert hast. Ich kenne mich mit Makros nicht sehr gut aus. Deswegen kann ich deinen Code nicht nachvollziehen. Das Tabellenblatt "PRELIMINARY STANDARD" wird bei einer Eingabe in Zelle E17 nicht kopiert, stattdessen aber das Tabellenblatt "Kalkulationsvorlage ". Ich müsste in deinem Code irgendwo einen Schritt einfügen, damit das andere Tabellenblatt kopiert wird. Ich weiß aber nicht an welcher Stelle. Sorry, trotzdem vielen Dank für deine Hilfe.
V.G. Mildred
AW: Makro Tabblatt löschen
22.01.2021 12:34:37
Peter
Hallo Mildred,
bei meiner ersten Antwort habe ich die 2. Vorlagendatei nicht berücksichtigt. Dies hole ich hiermit nach.
https://www.herber.de/bbs/user/143213.xlsm
Bitte nochmal probieren.
M.f.G. Peter Kloßek
AW: Makro Tabblatt löschen
22.01.2021 20:36:11
Mildred
Hallo Peter,
vielen Dank für deine Mühe. Es scheint auch alles zu klappen, nur leider ist deine Lösung für meine Datei nicht praktikabel. Ich erstelle die Datei für andere Anwender. Diese Anwender haben mit Excel nur wenig Erfahrung und mit Makros gar keine. Wenn dann ein Makro durchläuft, dass hin und her springt, gehen die Anwender davon aus, dass etwas mit der Datei nicht stimmt, auch wenn das Makro macht, was es machen soll.
Sorry, aber trotzdem vielen Dank für deine Hilfe!!!
V.G. Mildred
Anspruchsvolle Kienten
23.01.2021 00:31:06
Peter
Hallo Mildred,
die überflüssigen Bildschirmbewegungen habe ich abgestellt - so gut wie eben möglich - und sende Dir hier die geänderte Datei.
https://www.herber.de/bbs/user/143240.xlsm
Immerhin ist es schön zu hören, dass das Makro das macht, was gewünscht wird. Sollten noch weitere Wünsche bestehen, so lass es mich wissen.
M.f.G. Peter Kloßek
AW: Anspruchsvolle Kienten
23.01.2021 14:28:09
Manuela
Hallo Peter,
vielen Dank für das Makro. Auch möchte ich mich bei dir entschuldigen, es tut mir leid, dass ich eine anspruchsvolle Klientin bin. Ich wollte nicht als undankbar erscheinen. Ich bin wirklich froh, dass mir hier im Forum immer geholfen wird.
V.G. Mildred
AW: Anspruchsvolle Klienten
23.01.2021 15:20:23
Peter
Hallo Mildred,
gemeint waren Deine anspruchsvollen Klienten, nicht Du selbst. Ich gehe nun davon aus, dass Du bzw. Deine Klientel mit der letzten Version zufrieden seid. Das "Bildschirmflackern" ist bei Excel leider nicht immer ganz zu vermeiden.
Du hast gefragt, was man tun könnte, wenn mal jemand bei den Eingaben/Löschungen einen Fehler macht, um diesen zu korrigieren. Es gibt drei Möglichkeiten von Korrekturmaßnahmen: 1) Nutzung der UNDO-Funktion in Excel, 2) Datei schließen ohne speichern und den letzten gespeicherten Stand öffnen sowie 3) Sicherungsdatei vor der Bearbeitung erstellen und diese nach einem Speichern mit fehlerhaften Daten öffnen. Nähere Erläuterungen in der beiliegenden Datei.
https://www.herber.de/bbs/user/143264.xlsm
Falls noch Fragen auftauchen sollten, einfach wieder melden.
Mit freundlichem Gruß und ein schönes Wochenende.
Peter Kloßek

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige