Makro ausführen trotz Blattschutz
#11
Sorry ich hatte ihn ja wieder entfernt Angel 

Ich hatte ihn ganz oben und 1x ganz unten drinne :16: 
Gruß Reiner
Top
#12
Ich wiederhole: Stell den kompletten Code, so wie er in deinem Modul ist, hier rein. Alles andere ist Kaffeesudleserei und führt zu nichts.
Schöne Grüße
Berni
Top
#13
Ok,


Code:
Sub continue()
CarryOn = MsgBox("Willst du diese Tabellen-Eingaben Resetten? Achtung! Alle Eingaben werden unwiderruflich gelöscht! ", vbYesNo, "ACHTUNG!!")
If CarryOn = vbYes Then
ActiveSheet.Unprotect
Sheets("zusammenfassung").Select
    Range("I68").Select
    Selection.Copy
    Range("J68").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("K66").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("J68").Select
    Selection.NumberFormat = "#,##0.00 $"
    Selection.Font.Bold = True
    Range("K61").Select
    Sheets("Spatschicht").Select
    Range("J38:J47").Select
    Selection.ClearContents
    Range("H38:H41").Select
    Selection.ClearContents
    Range("J27:J32").Select
    Selection.ClearContents
    Range("H27:H32").Select
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=-15
    Range("J9:J23").Select
    Selection.ClearContents
    Range("H9:H20").Select
    Selection.ClearContents
    Range("H45:H47").Select
    Selection.ClearContents
    Sheets("Frühschicht").Select
    Range("J9:J23").Select
    Selection.ClearContents
    Range("J27:J32").Select
    Selection.ClearContents
    Range("H27:H32").Select
    Selection.ClearContents
    Range("K28").Select
    ActiveWindow.SmallScroll Down:=12
    Range("J38:J47").Select
    Selection.ClearContents
    Range("H38:H41").Select
    Selection.ClearContents
    Range("H45:H48").Select
    Selection.ClearContents
    Range("H9:H20").Select
    Selection.ClearContents
    Range("K39").Select
    Sheets("Zusammenfassung").Select
    Range("J68").Select
    Selection.Copy
    Sheets("Frühschicht").Select
    ActiveWindow.SmallScroll Down:=-21
    Range("J7").Select
    ActiveSheet.Paste
    Range("K13").Select
    ActiveSheet.Protect
End Sub

Sub Datum()
Dim ws As Worksheet
Dim letzte As Long

Set ws = Worksheets("Datum")
letzte = ws.Cells(Rows.Count, 1).End(xlUp).Row
If ws.Cells(letzte, 1).Value = Date Then
   MsgBox "Makro wurde heute schon ausgeführt!"
Else
   ws.Cells(letzte + 1, 1) = Date
   Call continue      'DeinMakro muss ersetzt werden durch den Namen deines Makros
End If

End Sub


Wenn ich es so einfüge und ausführe, kommt diese Fehlermeldung:
Fehler beim Kompilieren:
If Block ohne End If
Top
#14
Das glaube ich gerne, denn in deinem Makro "continue" fehlt ein End If vor End Sub.
Ich hab deinen Code mal etwas gekürzt. Select brauchst du zu 99,9 % nicht.

Code:
Range("A1").Select
Selection.ClearContents

ist das Gleiche wie

Range("A1").ClearContents

Code:
Sub continue()
CarryOn = MsgBox("Willst du diese Tabellen-Eingaben Resetten? Achtung! Alle Eingaben werden unwiderruflich gelöscht! ", vbYesNo, "ACHTUNG!!")
If CarryOn = vbYes Then
   ActiveSheet.Unprotect
   With Sheets("zusammenfassung")
       .Range("J68") = Range("I68")
       .Range("K66").ClearContents
   End With
   With Sheets("zusammenfassung").Range("J68")
       .NumberFormat = "#,##0.00 $"
       .Font.Bold = True
   End With
   With Sheets("Spatschicht")
       .Range("J38:J47").ClearContents
       .Range("H38:H41").ClearContents
       .Range("J27:J32").ClearContents
       .Range("H27:H32").ClearContents
       .Range("J9:J23").ClearContents
       .Range("H9:H20").ClearContents
       .Range("H45:H47").ClearContents
   End With
   With Sheets("Frühschicht")
       .Range("J9:J23").ClearContents
       .Range("J27:J32").ClearContents
       .Range("H27:H32").ClearContents
       .Range("J38:J47").ClearContents
       .Range("H38:H41").ClearContents
       .Range("H45:H48").ClearContents
       .Range("H9:H20").ClearContents
   End With
   Sheets("Frühschicht").Range("J7") = Sheets("Zusammenfassung").Range("J68")
   ActiveSheet.Paste
   ActiveSheet.Protect
End If
End Sub
Schöne Grüße
Berni
Top
#15
Hallo,

hättest Du halbwegs vernünftige Einrückungen benutzt, dann hättest Du
selbst entdecken können, wo das End If fehlt.

Zitat:Option Explicit

Sub continue()
CarryOn = MsgBox("Willst du diese Tabellen-Eingaben Resetten? Achtung! Alle Eingaben werden unwiderruflich gelöscht! ", vbYesNo, "ACHTUNG!!")
    If CarryOn = vbYes Then
        ActiveSheet.Unprotect
. . .
        ActiveSheet.Paste
        Range("K13").Select
        ActiveSheet.Protect
    End If
End Sub

Im übrigen: hast Du Deinen Code schon mal durchlaufen lassen und Dich über die Laufzeit und
den ständig flackernden Bildschirm geärgert? Das liegt an Deinen Unmengen an Select.
Bei jedem SELECT und bei jedem ACTIVATE zwingst Du Dein Programm zu einem Neudurchlauf.
Das kannst Du ganz eindrucksvoll erleben, wenn Du den Code im Einzelschrittmodus durchlaufen
läßt. Paß aber auf, daß Dir dabei nicht schwindelig wird
Aus diesem Grunde wird Dir jeder Helfer raten, schmeiße die SELECTs und die AKTIVATEs raus.
In den allermeisten Fällen sind sie überflüssig und stören den Programmablauf.
Top
#16
Hallo Beltason,


Code:
Option Explicit

Sub continue()
   Dim wsP As Worksheet
   Dim letzte As Long

   letzte = Worksheets("Datum").Cells(Rows.Count, "A").End(xlUp).Row

   Select Case MsgBox("Willst du diese Tabellen-Eingaben < Resetten >?" _
       & vbLf & vbLf & vbTab & "<<<<<  ACHTUNG!  >>>>>" _
       & vbLf & vbLf & vbLf & "Alle Eingaben werden unwiderruflich gelöscht!", vbYesNo, "<<<<<<<<<<<  ACHTUNG!  >>>>>>>>>>>")

       Case vbYes
           With Sheets("zusammenfassung")
               .Range("I68").Copy Destination:=.Range("J68")
               .Range("K66").ClearContents

           End With

           With Sheets("zusammenfassung").Range("J68")
               .NumberFormat = "#,##0.00 $"
               .Font.Bold = True

           End With

           With Sheets("Spatschicht")
               .Range("J38:J47,H38:H41,J27:J32,H27:H32,J9:J23,H9:H20,H45:H47").ClearContents

           End With

           With Sheets("Frühschicht")
               .Range("J9:J23,J27:J32,H27:H32,J38:J47,H38:H41,H45:H48,H9:H20").ClearContents
               Sheets("Zusammenfassung").Range("J68").Copy Destination:=.Range("J7")

           End With

       Case vbNo
           Worksheets("Datum").Cells(letzte, "A").ClearContents

       Case Else
           Worksheets("Datum").Cells(letzte, "A").ClearContents

   End Select

   For Each wsP In ActiveWorkbook.Worksheets
       With wsP
           .Protect DrawingObjects:=False, AllowFormattingCells:=False, Contents:=True, Scenarios:=True, _
                AllowSorting:=True, AllowInsertingHyperlinks:=True, AllowFiltering:=True

       End With

   Next

End Sub


Sub Datum()
   Dim ws As Worksheet
   Dim wsP As Worksheet
   Dim letzte As Long

   Set ws = Worksheets("Datum")
   letzte = ws.Cells(Rows.Count, "A").End(xlUp).Row

   If ws.Cells(letzte, "A").Value = Date Then
       MsgBox "Makro wurde heute schon ausgeführt!"

   Else
       For Each wsP In ActiveWorkbook.Worksheets
           With wsP
               .Unprotect

           End With

       Next
       ws.Cells(letzte + 1, "A") = Date
       Call continue

   End If

End Sub
Gruß Karl
Top
#17
Moin!
Ganz schön viele Beiträge für ein "Problem", welches bei Verwendung einer Vorlage (.xltx) völlig ohne VBA gar nicht erst existieren würde.
:21:

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#18
Hallo Karl,

ich habe deinen Code ins Modul 131 eingefügt. Leider kommt eine Debug Fehler Meldung. Ich schäme mich langsam, das Ich DAU euch so lange aufhalte.
Ich habe jetzt einfach mal die komplette Tabelle hochgeladen. (Ungern eigendlich)
Vieleicht schaust du mal darüber.

Danke :17:


Angehängte Dateien
.xlsm   Früh und Spätschicht_TEST.xlsm (Größe: 392,38 KB / Downloads: 10)
Top
#19
Ist keiner der mir dieses Makro fertig stellen kann? Also so, das man es pro Tag nur einmal resetten darf!
Top
#20
Hallo Reiner,

ich hänge dir die Datei einmal an,
Setze im Makro Reset_continue einen Haltepunkt und prüfe das Makro continue, ob die Zellen richtig angegeben sind.
Welche Zellen geleert werden und welche Werte in eine Zelle übernommen werden.
Schau dir auch einmal die geänderten Summenformeln, in Zusammenfassen an.


Angehängte Dateien
.xlsm   Clever Excel Forum Beltason Wenn kein Datum dann Makro starten.xlsm (Größe: 366,28 KB / Downloads: 8)
Gruß Karl
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste