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

Löschen Makro anpassen

Löschen Makro anpassen
03.09.2019 07:38:29
mike49
Hallo Leute,
mein Löschen Makro funktioniert nicht richtig.
Ich habe in meinen Blättern Jan-Dez 2 leere Spalten gelöscht. Die Feiertage, auf die Bezug genommen wird stehen jetzt im Bereich Q9:R37, wobei in Spalte Q das Datum und in R der jeweilige Text des Feiertags stehen. Jetzt stimmt die Formel, die nach dem Löschen die Namen der Feiertage in den Bereich J5:J35 wieder eingetragen soll, nicht mehr! Wie müsste die Formel im Makro bei "FormulaLocal=" angepasst werden?
Option Explicit
Sub Löschen()
Dim strAntwort As String
strAntwort = MsgBox("Achtung: Das gesamte Tabellenblatt wird zurückgesetzt!", _
vbExclamation + vbOKCancel, "Hinweis")
If strAntwort = vbCancel Then Exit Sub 'Bei "Abbrechen" abbrechen.
With Application
.ScreenUpdating = False 'Bildschirmaktualisierung abschalten.
.EnableEvents = False 'Ereignissprozeduren deaktivieren.
.Calculation = xlCalculationManual
End With
With ActiveSheet
' .Unprotect
.Range("C5:H35").ClearContents
.Range("J5:J35").FormulaLocal = _
"=WENN(ISTNV(INDEX($S$9:$T$37;VERGLEICH($B5;$S$9:$S$37;0);2));"";INDEX($S$9:$T$37;VERGLEICH($B5;$S$9:$S$37;0);2))"
.Range("D37").Value = "0"
.Range("C5").Select
' .Protect
End With
strAntwort = MsgBox("Die anderen Tabellenblätter ebenfalls zurücksetzen?", _
vbQuestion + vbYesNo + vbDefaultButton2, "Frage")
If strAntwort = vbYes Then
If ANDERE_TABELLEN = True Then
MsgBox "Alle Monate auf Null gesetzt.", vbInformation, "Information"
End If
End If
With Application
.ScreenUpdating = True 'Bildschirmaktualisierung abschalten.
.EnableEvents = True 'Ereignissprozeduren deaktivieren.
.Calculation = xlCalculationAutomatic
.ActiveWindow.ScrollRow = 3
End With
End Sub
Private Function ANDERE_TABELLEN() As Boolean
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name  ActiveSheet.Name And Len(Sh.Name) = 3 Then
If TABELLE_AUF_NULL(Sh.Name) = False Then
MsgBox "Fehler bei Tabelle: " & Sh.Name, _
vbCritical, "Abbruch"
Exit Function
End If
End If
Next
ANDERE_TABELLEN = True 'Erfolg vermerken.
End Function
Private Function TABELLE_AUF_NULL(strTabelle As String) As Boolean
'    On Error GoTo Ende 'Fehlerbehandlung übernehmen.
With ThisWorkbook.Sheets(strTabelle) 'Alles auf dieses Tabellenblatt beziehen:
' .Unprotect
.Range("C5:H35").ClearContents
.Range("J5:J35").FormulaLocal = _
"=WENN(ISTNV(INDEX($S$9:$R$37;VERGLEICH($B5;$S$9:$S$37;0);2));"""";INDEX($S$9:$T$37; _
VERGLEICH($B5;$S$9:$S$37;0);2))"
.Range("D37").Value = "0"
' .Protect
Application.GoTo .Range("C5")
ActiveWindow.ScrollRow = 3
ThisWorkbook.Sheets("Jan").Activate
End With
TABELLE_AUF_NULL = True 'Erfolg vermerken.
Ende:
'    On Error GoTo 0 'Fehlerbehandlung zurückgeben.
End Function

Gruß
mike49

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschen Makro anpassen
03.09.2019 08:54:01
GerdL
Hallo Mike,
nimm mal die $ - Zeichen in den eingesetzten Formeln raus.
Gruß Gerd
AW: Löschen Makro anpassen
03.09.2019 09:08:29
mike49
Hallo Gerd,
das ist es nicht. Es ist ja jetzt nicht mehr der Bereich S9:T37!
Gruß
mike49
AW: Löschen Makro anpassen
03.09.2019 09:41:04
GerdL
Hallo Mike,
hast ja Recht. Das hättest du vorher machen müssen.
Ersetze in den Formeln die Spaltenbuchstaben
S durch Q
T durch R
Gruß Gerd
AW: Löschen Makro anpassen
03.09.2019 10:00:32
mike49
Hallo Gerd,
das hatte ich schon gemacht. Funktioniert aber trotddem nicht.
Ich lade mal - der Größe wegen - nur das Blatt Jan der Mappe hoch.
Schau dir's bitte mal an.
https://www.herber.de/bbs/user/131808.xls
Gruß
mike49
Anzeige
AW: Löschen Makro anpassen
03.09.2019 11:02:40
Daniel
HI
die Feiertagsliste gilt ja für jeden Monat und ist für jeden Monat gleich.
die gehört in ein eigenes Tabellenblatt, welches du ja schon hast, und dann solltest du in der Formel die Feiertagsliste auf diesem Tabellenblatt verwenden.
Dann hast du das Problem nicht, dass sich der Zellbereich verschiebt.
Gruß Daniel
AW: Löschen Makro anpassen
03.09.2019 20:07:09
mike49
Hallo Daniel,
ich möchte jetzt nicht mehr alles ändern, denn alles funktioniert jetzt, bis auf das:
Die Ausgangsmappe hieß Muster1.xls, die ich nach korrekturen auch so abgespeichert habe.
Wenn ich jetzt die Mappe nach Stundennachweis.xls umbenenne, wird beim Drücken des Löschen-Buttons beanstandet, dass die Mappe Muster1.xls verschoben, umbenannt oder gelöscht wurde und das Makro wird nicht ausgeführt.
Habe ich was falsch gemacht? Das Makro sollte unabhänig vom Namen der Mappe laufen.
Gruß
mike49
Anzeige
Hab die Lösung selber gefunden . . .
03.09.2019 20:18:17
mike49
. . . ich musste das Makro neu zuweisen.
Gruß
mike49

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige