Sub wird in "falscher" Reihenfolge ausgeführt

Bild

Betrifft: Sub wird in "falscher" Reihenfolge ausgeführt
von: Ted
Geschrieben am: 18.10.2015 12:08:39

Hallo,
ich habe folgendes Sub:

  • 
    Sub Würfeln()
        'Teil 1 berechnen
        SendKeys "^%{F9}"
        'Teil 2 kopieren
        Tabelle2.Range("E2:E7").Copy
        Tabelle2.Range("F2:F7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        
        Range("C10:C15").ClearContents
        Range("C10").Select
    End Sub


  • Teil 2 wird jedoch vor Teil 1 ausgeführt.
    Ich habe zwischen den Teilen und am Ende Wait eingefügt und Tabelle2 aktiviert. Es war deutlich zu erkennen, dass zuerst kopiert und danach neu berechnet wurde (bzw. die Anzeige der Berechnung erst nach dem Kopieren aktiviert wurde). In Tabelle2.F2:F7 stehen also nach Ausführung des Makros die Werte der vorherigen Berechnung statt der aktuellen.
    Wenn Tabelle2 nicht das aktive Worksheet ist, nach der Ausführung Tabelle2 aktiviert wird, kann man sehen, dass erst dann die Anzeige der Berechnung (Teil 1) durchgeführt wird - in F2:F7 stehen weiterhin die alten Werte.
    Tabelle2.Calculate verändert das Verhalten nicht.
    Hat jemand eine Ahnung, warum das so ist und wie ich das ändern kann?
    Danke und Gruß
    Ted

    Bild

    Betrifft: AW: Sub wird in "falscher" Reihenfolge ausgeführt
    von: Daniel
    Geschrieben am: 18.10.2015 12:19:08
    Hi
    normalerweise sollte ein Application.Calculate anstelle deines SendKeys schon eine neuberechnung der Formeln auslösen.
    vielleicht hilft ja auch eines von diesen:
    Application.CalculateFull und Application.CalculateFullRebuild
    Gruss Daniel

    Bild

    Betrifft: AW: Sub wird in "falscher" Reihenfolge ausgeführt
    von: Ted
    Geschrieben am: 19.10.2015 04:46:27
    Hallo Daniel,
    Danke für die Antwort.
    Jedoch:
    Wenn ich Application.Calculate hinzufüge verändert sich das Verhalten, ebenso wie bei Tabelle2.Calculate, erwartungsgemäß nicht. Ersetze ich SendKeys durch Application.Calculate passiert überhaupt nichts da Calculate, entgegen der Beschreibung von MS, rein gar nichts tut. Dies ist im Netz z. B. hier http://www.happerschoss.net/hilfe-und-support/46-microsoft-office/155-excel-2010-vba-calculate-calculatefull-und-calculatefullrebuild-methoden nachzulesen.
    CalculateFull berechnet alle geöffneten Mappen neu. Das will ich auf keinen Fall.
    Gruß
    Ted

    Bild

    Betrifft: AW: Sub wird in "falscher" Reihenfolge ausgeführt
    von: ransi
    Geschrieben am: 18.10.2015 12:28:36
    HAllo Ted,
    Versuch mal sowas:

    Option Explicit

    Sub Würfeln()
        With Tabelle2
            '.EnableCalculation = True
            .Calculate
            '.EnableCalculation = False
            .Range("F2:F7").Value = .Range("E2:E7").Value
            .Range("C10:C15").ClearContents
            .Range("C10").Select
        End With
    End Sub


    ransi

    Bild

    Betrifft: AW: Sub wird in "falscher" Reihenfolge ausgeführt
    von: Ted
    Geschrieben am: 19.10.2015 05:06:45
    Hallo Ransi,
    Danke für die Antwort.
    Leider funktioniert der Code nicht, da Calculate rein gar nichts tut. Egal ob EnableCalculation vorher explizit aktiviert wird oder nicht. Dieses Verhalten kann man z. B. hier http://www.happerschoss.net/hilfe-und-support/46-microsoft-office/155-excel-2010-vba-calculate-calculatefull-und-calculatefullrebuild-methoden nachlesen.
    Wenn ich .Calculate durch SendKeys ersetze funktioniert die Berechnung. Soweit hast Du mir schonmal sehr geholfen. Allerdings musste ich

    Range("C10:C15").ClearContents
    Range("C10").Select

    aus dem With-Bereich entfernen und hinter End With setzen, da die beiden Zeilen nicht auf Tabelle2 ausgeführt werden sollen. Jetzt erhalte ich bei ClearContents die Meldung "Dies ist bei verbundenen Zellen leider nicht möglich" obwohl die Zellen natürlich nicht verbunden sind. Ich habe auch versucht, die Zellen zu verbinden und den Verbund wieder aufzulösen. Erfolglos.
    Idee?
    Danke und Gruß
    Ted

     Bild

    Beiträge aus den Excel-Beispielen zum Thema "Sub wird in "falscher" Reihenfolge ausgeführt"