Office: (Office 365) Makro funktioniert nicht so wie es soll

Helfe beim Thema Makro funktioniert nicht so wie es soll in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Da ich deine Origonalmappe nicht kenne, kann ich auch nicht feststellen, was bei dir den Fehler verursacht. Da bleibt nichts weiter übrig, als dem Code... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Leipziger65, 4. November 2021.

  1. Beverly
    Beverly Erfahrener User

    Makro funktioniert nicht so wie es soll


    Da ich deine Origonalmappe nicht kenne, kann ich auch nicht feststellen, was bei dir den Fehler verursacht. Da bleibt nichts weiter übrig, als dem Code zu befehlen, über den Fehler drüber wegzugehen. Das ist zwar keine saubere Programmierung, aber auf Basis meiner Unkenntnis der Ursache nicht anders lösbar. Ergänze den Code wie folgt:

    Code:
    On Error Resume Next
    shaShape.Delete
    On Error GoTo 0
    
    Was genau ist das Problem bezüglich Blattschutz?


    Makro funktioniert nicht so wie es soll GrußformelMakro funktioniert nicht so wie es soll Beverly's Excel - Inn
     
  2. Das ging gewaltig in die Hose. Alle Schaltflächen, Kontrollkästchen sind nach dem speichern auch aus der XLSM Datei gelöscht. Bloß gut es gibt immer eine Schicherungskopie. Ich lasse das Makro mit Nachfrage. Vielen Dank für Deine Hilfe.
    Habe mal eine Mappe erstellt und in dieser alle Fehler beschrieben. Wenn es nicht ohne weiteres lösbar ist, dann lass es.
     
    Leipziger65, 7. November 2021
    #32
  3. Beverly
    Beverly Erfahrener User
    Dann hast du was komplett falsch gemacht. In deiner Mappe gibt es außerdem überhaupt keinen Code, der Schaltflächen löscht - er löscht nur die Makrozuweisung und ist damit der ursprüngliche Code ohne alle nachfolgenden Veränderungen.
    Mein Code sieht mit allen weiter oben geposteten und von dir gewünschten Änderungen inzwischen so aus:
    Code:
    Sub KopieErstellenXLSX()
        Dim Name
        Dim pfad As String
        Dim wksTab As Worksheet
        Dim shaShape As Shape
        pfad = "E:\Z_Test\" & Range("V5") & ".xlsx"
        Name = Application.GetSaveAsFilename(InitialFileName:=pfad, _
            fileFilter:="Microsoft Excel-Arbeitsmappe (*.xlsx), *.xlsx")
        If Name <> False Then
            Workbooks.Add 1
            ActiveWorkbook.Worksheets(1).Name = Format(Now, "hh_mm_ss")
            For Each wksTab In ThisWorkbook.Worksheets
                wksTab.Copy after:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)
            Next wksTab
            With ActiveWorkbook '<== alles bezieht sich auf die neu erstelle Arbeitsmappe mit den kopierten Blättern
                ' Nachrichten von Excel unterdrücken
                Application.DisplayAlerts = False
                ' 1. Tabellenblatt löschen
                .Worksheets(1).Delete
                ' Nachrichten von Excel wieder eisnchalten
                Application.DisplayAlerts = True
                ' Schleife über alle Tabellenblätter
                For Each wksTab In Worksheets
                    ' es sind Shapes im laufenden Blatt vorhanden
                    If wksTab.Shapes.Count > 0 Then
                        ' Schleife über alle Shapes
                        For Each shaShape In wksTab.Shapes
                            ' laufendes Shape löschen
                            shaShape.Delete
                        Next shaShape
                    End If
                    ' Blattschutz mit PW "ABCDE" setzen
                    wksTab.Protect "ABCDE"
                Next wksTab
                ' Nachrichten von Excel unterdrücken
                Application.DisplayAlerts = False
                ' Mappe im gewählten Format XLSX speichern
                .SaveAs Filename:=Name, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
                ' Nachrichten von Excel wieder eisnchalten
                Application.DisplayAlerts = True
                ' Mappe schließen
                .Close
            End With
        End If
    End Sub
    
    Jeglicher Code zum Löschen bezieht sich auf die NEU erstellte Arbeitsmappe (siehe Hinweis <== im Code) und NICHT auf die Arbeitsmappe mit dem Code. Hast du möglicherweise den Code im Einzelschrittmodus ablaufen lassen und vor dem Löschen der Shapes von Hand wieder die Ausgangsmappe aktiviert? In diesem Fall wird DIESE zum ActivWorkbook und die Button werden dann logischerweise DORT gelöscht.

    Dein neues Problem betrifft also dein Change-Ereignis. Deine "Beschreibung" ist vollkommen unklar und es geht nicht eindeutig hervor, was mit welchen Zellen passieren soll. Sollen die Zellen in den gelb markierten Spalten ebenfalls geschützt werden sobald ein Eintrag vorgenommen wurde? Oder meinst du etwas anderes?


    Makro funktioniert nicht so wie es soll GrußformelMakro funktioniert nicht so wie es soll Beverly's Excel - Inn
     
  4. Makro funktioniert nicht so wie es soll

    Hallo, langsam wird es mir peinlich zu nerven. Kann sein das ich vorhin etwas falsch gemacht hatte. Der neu Code bringt die gleiche Fehlermeldung in der Zeile wo shaShape.Delete steht aber jetzt erst nach dem anlegen der neuen Datei.

    Die grünen Spalten sollen einen Schreibschutz haben und diesen auch behalten. Die gelben Spalten haben keinen Schutz. Aber wenn dort etwas eingetragen wird, wird dadurch der gesetzte Schreibschutz aus den grünen Spalten aufgehoben. Hat bestimmt etwas mit ActiveSheet.Unprotect bzw. ActiveSheet.protect zu tun. Wenn es nicht lösbar ist, dann ist das eben so.
     
    Leipziger65, 7. November 2021
    #34
  5. Beverly
    Beverly Erfahrener User
    Der Schutz wird bei deinem Code deshalb nicht wieder gesetzt, weil du ihn zu Beginn generell aufhebst, aber nach Eintrag der Uhrzeit nicht in jedem Fall wieder setzt. So sollte dieses Problem behoben sein:

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("E12:E310")) Is Nothing Then
            ActiveSheet.Unprotect
            Range("H" & Target.Row) = Time
            ActiveSheet.Protect
        End If
        'In J Status und abhängig davon in K Startzeot oder in O Endzeit
        If Not Intersect(Target, Range("J11:J310")) Is Nothing Then
            ActiveSheet.Unprotect
            If Target.Value = 3 And Range("H" & Target.Row) <> "" Then
                Range("K" & Target.Row) = Time
            ElseIf Target.Value = 1 And Range("H" & Target.Row) <> "" Then
                Range("O" & Target.Row) = Time
            End If
            ActiveSheet.Protect
        End If
    End Sub
    
    Du solltest dir angewöhnen, den Code (so wie bei mir) mit Einrückungen zu schreiben - dann kannst du besser verstehen, wo sich welche Befehle befinden müssen.

    Da durch deinen neuen Code das Blatt jetzt geschützt wird, löst mein Code selbstverständlich einen Fehler aus, da kein Schutz gesetzt werden kann wenn bereits einer exisitert und bisher wurde davon ausgegangen, dass deine Blätter nicht geschützt sind. Mit folgender Ergänzung sollte kein Fehler mehr auftreten:
    Code:
            ' alles bezieht sich auf die neu erstelle (aktive) Arbeitsmappe mit den kopierten Blättern
            With ActiveWorkbook
                ' Nachrichten von Excel unterdrücken
                Application.DisplayAlerts = False
                ' 1. Tabellenblatt löschen
                .Worksheets(1).Delete
                ' Nachrichten von Excel wieder einschalten
                Application.DisplayAlerts = True
                ' Schleife über alle tabellenblätter
                For Each wksTab In Worksheets
                    '******** Ergänzung für Blattschutz
                    ' Blattschutz aufheben
                    wksTab.Unprotect
                    ' alle Zellen sperren
                    wksTab.Cells.Locked = True
                    '**************************************
                    ' es sind Shapes im laufenden Blatt vorhanden
                    If wksTab.Shapes.Count > 0 Then
                        ' Schleife über alle Shapes
                        For Each shaShape In wksTab.Shapes
                            ' laufendes Shape löschen
                            shaShape.Delete
                        Next shaShape
                    End If
                    ' Blattschutz mit PW "ABCDE" setzen
                    wksTab.Protect "ABCDE"
                Next wksTab
                ' Nachrichten von Excel unterdrücken
                Application.DisplayAlerts = False
                ' Mappe im gewählten Format XLSX speichern
                .SaveAs Filename:=Name, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
                ' Nachrichten von Excel wieder eisnchalten
                Application.DisplayAlerts = True
                ' Mappe schließen
                .Close
            End With
    

    Makro funktioniert nicht so wie es soll GrußformelMakro funktioniert nicht so wie es soll Beverly's Excel - Inn
     
  6. Das mit den Spalten funktioniert perfekt. Nur das mit dem speichern nicht. Es kommt wieder ein anderer Fehler. Dafür das es nur den Tastendruck zur Bestätigung das es nicht mehr im XLSM Format gespeichert werden soll, ist der Aufwand langsam zu hoch. Ich und die anderen Bediener können damit leben.

    Hätte niemals gedacht das aus so einer kleinen Frage am Anfang so eine große Unterhaltung wird.
    Nochmals 1000 Dank für Deine Unterstützung und Geduld.
     
    Leipziger65, 7. November 2021
    #36
  7. Jetzt nur eine Frage. Ist es möglich den letzten Eintrag aus Spalte H in die Zelle V5 zu schieben?
     
    Leipziger65, 7. November 2021
    #37
  8. Beverly
    Beverly Erfahrener User

    Makro funktioniert nicht so wie es soll

    Du hast den Code aus meinem vorhergehenden Beitrag komplett übernommen? Was für ein Fehler kommt denn? Das kann ich nicht nachvollziehen.


    Makro funktioniert nicht so wie es soll GrußformelMakro funktioniert nicht so wie es soll Beverly's Excel - Inn
     
  9. Letzt Frage habe ich mir gerade selber beantwortet. Über Index. Makro funktioniert nicht so wie es soll *:)*

    Ja komplett so übernommen. Dies kommt als Fehler.
    .SaveAs Filename:=Name, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
     
    Leipziger65, 7. November 2021
    #39
  10. Mir ist gerade etwas aufgefallen. Wenn man den Blattschutz nicht drin hat und in Spalte E etwas eingibt wird der Schutz aktiviert. Was ich ja toll fand, bis ich merkte das der Zugriff auf Objekt bearbeiten jedes mal nicht erlaubt ist. Auch wenn ich diesen im Vorfeld frei gebe. Und da benötige ich um eine UserForm bedienen zu können.
     
    Leipziger65, 7. November 2021
    #40
  11. Beverly
    Beverly Erfahrener User
    Nicht nur WO der Fehler kommt sondern auch WAS der Debugger sagt wenn diese Zeile ausgeführt wird.

    Zeichne mit dem Makrorekorder auf, wie du den Blattschutz so setzt, dass Objekte bearbeitet werden können - genau so musst du den Schutz auch per Code setzen - also nicht einfach nur ActiveSheet.Protect


    Makro funktioniert nicht so wie es soll GrußformelMakro funktioniert nicht so wie es soll Beverly's Excel - Inn
     
  12. Alles gut, Lösung gefunden. Vor der ersten Eingabe in Spalte E wird per Doppelklick wie gewohnt die Userform aufgerufen, dann läuft es wie gewollt.
     
    Leipziger65, 7. November 2021
    #42
Thema:

Makro funktioniert nicht so wie es soll

Die Seite wird geladen...
  1. Makro funktioniert nicht so wie es soll - Similar Threads - Makro funktioniert

  2. Makro in Excel 2003 funktioniert nicht mehr

    in Microsoft Excel Hilfe
    Makro in Excel 2003 funktioniert nicht mehr: Hallo zusammen, ich hatte vor vielen Jahren in Excel 2003 einen Kalender mit Makros erstellt. Nachdem ich auf Excel 2016 gegangen bin, mußte ich feststellen, dass es Fehlermelunden plötzlich gibt,...
  3. Dateien mit Makro funktioniert an einem PC nicht

    in Microsoft Excel Hilfe
    Dateien mit Makro funktioniert an einem PC nicht: Hallo Zusammen, ich arbeite mit Excel 2013. Ich nutze auf Arbeit eine Excel Datei, mit verschiedenen Abfragen an eine Datenbank. Die Abfrage (Makro) wird durch den klick auf einen Button...
  4. VBA Speichern: Warum funktioniert mein Makro nicht richtig

    in Microsoft Excel Hilfe
    VBA Speichern: Warum funktioniert mein Makro nicht richtig: Hallo an alle, ich habe bisher häufiger sehr gute Tipps im Forum gefunden. Leider habe ich aber ein Problem an dem ich z.Z. scheitere. Seit längeren versuche ich immer wieder den Fehler in dem...
  5. Eigenes selbstzertifiziertes Makro funktioniert plötzlich nciht mehr

    in Microsoft Outlook Hilfe
    Eigenes selbstzertifiziertes Makro funktioniert plötzlich nciht mehr: Hallo zusammen. Wir haben ein selbstgeschriebenes Ablagemakro für Mails im Einsatz, das von heute auf morgen bei immer mehr Mitarbeitern im Unternehmen den Dienst quittiert. - es ist selbst...
  6. Problem bei Excel - VBA Makro SVERWEIS funktioniert nicht!

    in Microsoft Excel Hilfe
    Problem bei Excel - VBA Makro SVERWEIS funktioniert nicht!: Hallo Zusammen, vielleicht kann mir jemand bei meinem Problem helfen. Ich bin in der VBA Programmierung nicht so fit. Ich habe es mit einer Makroaufzeichnung versucht und bekam dieses Ergebnis:...
  7. Makro funktioniert nicht auf allen Rechnern

    in Microsoft Word Hilfe
    Makro funktioniert nicht auf allen Rechnern: Hallo zusammen, in einem Word-Dokument sind Makros. Mit dem ersten Button lässt sich eine webseite öffnen, der zweite verschickt das ausgefüllte Dokument an eine bestimmte E-Mail-Adresse und der...
  8. Makro funktioniert nicht nach Umstellung auf von XL 2003 auf 2010

    in Microsoft Excel Hilfe
    Makro funktioniert nicht nach Umstellung auf von XL 2003 auf 2010: Hallo zusammen, wer ist so nett, und kann mir folgendes Makro so abändern, dass es wieder richtig funktioniert. Am besten mit XL 2003 und 2010. Problem: In XL 2010 wird das Tabellenblatt "FS...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden