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

Probleme mit Application.ScreenUpdating = False

Probleme mit Application.ScreenUpdating = False
29.01.2019 13:08:25
Sebastian
Hallo zusammen,
bei nachfolgenden Code werden aus bestimmten Arbeitsblättern Bereiche in das Arbeitsblatt "Zusammenfassung" kopiert, dort ein Filter drübergelegt und dann diese Daten wiederum in das Blatt "offene Aufträge" kopiert. Hat immer geklappt, nun läuft das Makro ohne Fehlermeldung durch, kopiert aber nix. Entferne ich Application.ScreenUpdating = False, läuft das ganze auch wenigstens bis zum Schritt kopieren in Blatt "Zusammenfassung". Die folgenden Schritte, den Filter drüberlegen und die gefilterten Daten in das Blatt "offene Aufträge" kopieren klappt wieder nicht. Auch hier alles ohne Fehlermeldung. Den gleichen Code habe ich in einer anderen Arbeitsmappe, wo er ohne Problem durchläuft. Einer eine Idee woran es liegen kann?
  • 
    Sub Makro2()
    ' offene Aufträge
    Dim shMain As Worksheet
    Dim Sh As Worksheet
    Dim i As Integer
    Set shMain = Sheets("Zusammenfassung")
    Set shMain2 = Sheets("offene Aufträge")
    Application.ScreenUpdating = False
    For i = 1 To Sheets.Count
    ActiveWorkbook.Sheets(i).Unprotect Password:="xxx"
    Next
    Sheets("Zusammenfassung").Select
    Range("A5:i1000").Select
    Selection.ClearContents
    For Each Sh In ThisWorkbook.Worksheets
    'Festlegung welche Tabellenblätter kopiert werden sollen und dann
    If Sh.Name  "Zusammenfassung" And Sh.Name  "offene Aufträge" And Sh.Name  "  _
    _Auswertung" And Sh.Name  "Daten" Then
    'welcher Bereich soll kopiert werden & mit Ergänzung nur den Bereich im gewähltem Bereich zu  _
    kopieren mit dem letzten Eintrag      in Spalte 1 des gewählten Bereichs (in diesen Fall Spalte C)
    Sh.Range("a5:i" & Sh.Cells(Sh.Rows.Count, 1) _
    .End(xlUp).Row).Copy
    'Wohin kopieren
    shMain.Cells(shMain.Cells(shMain.Rows.Count, 2) _
    .End(xlUp).Row + 1, 1).PasteSpecial Paste:=xlPasteValues
    End If
    Next
    shMain2.Select
    Range("a5:i300").Select
    Selection.ClearContents
    shMain.Range("a4:j1000").AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=shMain2.Range("i1:i2"), CopyToRange:=shMain2.Range("a4:j4"), Unique:=False
    Range("A4:j4").Select
    Selection.AutoFilter
    shMain2.Select
    Range("A4:j4").Select
    Selection.AutoFilter
    For i = 1 To Sheets.Count
    ActiveWorkbook.Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True,  _
    Password:="xxx"
    Next
    End Sub
    

  • MfG Sebastian

    11
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Probleme mit Application.ScreenUpdating = False
    29.01.2019 13:31:35
    onur
    Und wo wird Application.ScreenUpdating wieder auf true gesetzt?
    AW: Probleme mit Application.ScreenUpdating = False
    29.01.2019 22:11:06
    Rob
    Probier es mal damit (ungetestest auf Grund fehlender Datei)
    
    Option Explicit
    Sub Makro2()
    ' offene Aufträge
    Dim shMain, shMain2, Sh As Worksheet
    Dim i As Integer
    Dim lastRow1, lastRow2 As Long
    Set shMain = Sheets("Zusammenfassung")
    Set shMain2 = Sheets("offene Aufträge")
    Application.ScreenUpdating = False
    For i = 1 To Sheets.Count
    ActiveWorkbook.Sheets(i).Unprotect Password:="xxx"
    Next
    Sheets("Zusammenfassung").Range("A5:i1000").ClearContents
    For Each Sh In ThisWorkbook.Worksheets
    'Festlegung welche Tabellenblätter kopiert werden sollen und dann
    If Sh.Name  "Zusammenfassung" And Sh.Name  "offene Aufträge" And Sh.Name  _
    "Auswertung" And Sh.Name  "Daten" Then
    'letzte Zeile im Sheet bestimmen
    lastRow1 = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row
    lastRow2 = shMain.Cells(shMain.Cells(shMain.Rows.Count, 2) _
    .End(xlUp).Row + 1)
    'welcher Bereich soll kopiert werden & mit Ergänzung nur den Bereich im gewähltem  _
    Bereich zu _
    kopieren mit dem letzten Eintrag      in Spalte 1 des gewählten Bereichs (in diesen  _
    Fall Spalte C)
    Sh.Range("a5:i" & lastRow).Copy
    'Wohin kopieren
    shMain.Cells(lastRow2, 1).PasteSpecial Paste:=xlPasteValues
    End If
    Next
    shMain2.Range("a5:i300").ClearContents
    shMain.Range("a4:j1000").AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=shMain2.Range("i1:i2"), CopyToRange:=shMain2.Range("a4:j4"), Unique:=False
    Range("A4:j4").AutoFilter
    shMain2.Range("A4:j4").AutoFilter
    For i = 1 To Sheets.Count
    ActiveWorkbook.Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:= _
    True, _
    Password:="xxx"
    Next
    Applicaton.ScreenUpdating = True
    End Sub
    

    Anzeige
    AW: Probleme mit Application.ScreenUpdating = False
    29.01.2019 22:18:43
    Rob
    Ansonsten mal mit F8 in den Debugging Modus gehen. Dann siehst Du auch an welcher Code-Zeile es liegt oder die Datei hier hochladen (ohne Makro bitte).
    AW: Probleme mit Application.ScreenUpdating = False
    31.01.2019 08:21:49
    Sebastian
    Hallo zusammen,
    bin leider Gestern verhindert gewesen und heute werde ich auch nicht vor Nachmittag zu kommen, ich melde mich zum Ergebnis. Vielen Dank aber erstmal für den Input
    AW: Probleme mit Application.ScreenUpdating = False
    31.01.2019 17:19:29
    Sebastian
    Hallo Rob,
    hab dein Code probiert. Er bleibt in der Zeile
    
    shMain.Cells(lastRow2, 1).PasteSpecial Paste:=xlPasteValues
    
    mit Laufzeitfehler 1004 stehen. Zwei Kleinigkeiten habe ich berichtigt. Trotzdem verstehe ich nicht, warum der Ursprungscode in einer anderen Exceldatei klappt und hier zicken macht. Ich habe ja auf den Blattschutz getippt, da der in der anderen Datei nicht abgefragt wird und den Code wie folgt abgeändert:
    Sub Makro2()
    ' offene Aufträge
    Dim shMain As Worksheet
    Dim shMain2 As Worksheet
    Dim Sh As Worksheet
    Dim i As Integer
    Set shMain = Sheets("Zusammenfassung")
    Set shMain2 = Sheets("offene Aufträge")
    Application.ScreenUpdating = False
    Sheets("Zusammenfassung").Select
    Range("A5:i1000").Select
    Selection.ClearContents
    For Each Sh In ThisWorkbook.Worksheets
    'Festlegung welche Tabellenblätter kopiert werden sollen und dann
    If Sh.Name  "Zusammenfassung" And Sh.Name  "offene Aufträge" And Sh.Name  " _
    Auswertung" And Sh.Name  "Daten" Then
    'welcher Bereich soll kopiert werden & mit Ergänzung nur den Bereich im gewähltem  _
    Bereich zu kopieren mit dem letzten Eintrag in Spalte 1 des gewählten Bereichs (in diesen Fall Spalte C)
    Sh.Range("a5:i" & Sh.Cells(Sh.Rows.Count, 1) _
    .End(xlUp).Row).Copy
    'Wohin kopieren
    shMain.Cells(shMain.Cells(shMain.Rows.Count, 2) _
    .End(xlUp).Row + 1, 1).PasteSpecial Paste:=xlPasteValues
    End If
    Next
    shMain2.Select
    Range("a5:i300").Select
    Selection.ClearContents
    shMain.Range("a4:j1000").AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=shMain2.Range("i1:i2"), CopyToRange:=shMain2.Range("a4:j4"), Unique:=False
    Range("A4:j4").Select
    Selection.AutoFilter
    shMain2.Select
    Range("A4:j4").Select
    Selection.AutoFilter
    Application.ScreenUpdating = True
    End Sub
    
    Da kommt aber auch der Fehler bei

    shMain.Cells(shMain.Cells(shMain.Rows.Count, 2)_.End(xlUp).Row + 1, 1).PasteSpecial Paste:=xlPasteValues
    mit die PasteSpecial-Methode des Range Objectes kann nicht ausgeführt werden :-(.
    Mfg Sebastian
    Anzeige
    AW: Probleme mit Application.ScreenUpdating = False
    31.01.2019 17:31:01
    Daniel
    Hi
    noch ein Tipp: Wenn der Fehler kommt, sind dann die betroffenen Zellen Teil eines Zellverbundes?
    Verbundene Zellen machen auch manchmal Probleme, wenn man sie bei der Programmierung nicht berücksichtigt hat.
    btw, du kannst die Zeile auch etwas einfacher schreiben:
    shMain.Cells(shMain.Rows.Count, 2).End(xlup).Offset(1, -1).PasteSpecial xlpasteValues
    
    Gruß Daniel
    AW: Probleme mit Application.ScreenUpdating = False
    01.02.2019 07:09:55
    Sebastian
    Hallo Daniel,
    es gibt keine verbundenen Zellen. Deine vorgeschlagene Vereinfachung habe ich übernommen, aber _ es bleibt beim selben Ergebnis. Nehme ich
    
    Application.ScreenUpdating = False
    
    raus, wird zumindest alles in das Blatt Zusammenfassung kopiert, der Code läuft auch weiter durch und möchte auch in das Blatt offene Aufträge kopieren, nur kann er nix einfügen. Jetzt habe ich versucht mal händisch zu kopieren und siehe da geht auch nicht. Wenn ich in einem anderen Blatt ein Bereich per Strg+C in die Zwischenablage habe und dann in das Blatt offene Aufträge einfügen möchte, ist im Menü per Rechtsklick das Einfügen ausgegraut! Es gibt aber kein Blattschutz.
    MfG Sebastian
    Anzeige
    AW: Probleme mit Application.ScreenUpdating = False
    01.02.2019 08:33:45
    Daniel
    Lass das ScreenUpdating = False doch einfach weg.
    Wenn man konsequent ohne Select und Activate arbeitet und alle Zellbezüge vollständig referenziert (Dh. Vor jedem Cells, Range, Rows, Colums steht das Tabellenblatt), dann braucht man das in den meisten Fällen nicht.
    Gruß Daniel
    AW: Probleme mit Application.ScreenUpdating = False
    01.02.2019 14:04:57
    Sebastian
    Hallo Daniel,
    mache ich ja wie beschrieben, bringt mich aber nicht weiter.
    MfG Sebastian.
    AW: Probleme mit Application.ScreenUpdating = False
    01.02.2019 20:19:42
    Rob
    Lad doch mal die Datei ohne Makro hoch.
    AW: Probleme mit Application.ScreenUpdating = False
    04.02.2019 14:02:21
    Sebastian
    Hallo,
    habs gelöst...Bevor ich das Makro auslöse, lösche ich ein bestimmten Bereich, der hat nicht ausgereicht. darum wurden die Werte erst ab Zeile 3000 eingefügt....Viel Zeit gekostet, für so ein kleinen Fehler.
    MfG
    Anzeige

    127 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige