Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1452to1456
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

Sub wird in "falscher" Reihenfolge ausgeführt

Sub wird in "falscher" Reihenfolge ausgeführt
18.10.2015 12:08:39
Ted
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

    4
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Sub wird in "falscher" Reihenfolge ausgeführt
    18.10.2015 12:19:08
    Daniel
    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

    AW: Sub wird in "falscher" Reihenfolge ausgeführt
    19.10.2015 04:46:27
    Ted
    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

    Anzeige
    AW: Sub wird in "falscher" Reihenfolge ausgeführt
    18.10.2015 12:28:36
    ransi
    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

    Anzeige
    AW: Sub wird in "falscher" Reihenfolge ausgeführt
    19.10.2015 05:06:45
    Ted
    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
    Anzeige

    300 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige