Checkboxen bei wiederholten Ausdrücken falsch

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von VBAExcel.

    Checkboxen bei wiederholten Ausdrücken falsch

    Hallo zusammen,

    ich bin ehrlich gesagt am Verzweifeln und hoffe, dass ihr mir weiterhelfen könnt. Ich komme seit mehreren Stunden bei einem vermeintlich banalen Problem nicht weiter.
    Ich habe den Code mittlerweile stark abgestrippt, so dass er leicht verständlich sein sollte.
    Es geht darum, dass in Excel 2016 über VBA ein Sheet mit Checkboxen öfters hintereinander ausgedruckt wird. Dazwischen werden die Checkboxen alle zurückgesetzt (false) und je nach Anwendungsfall einzeln wieder gesetzt.
    Das Problem ist, dass die Checkboxen ab dem 2. Ausdruck auf dem Ausdruck falsch gesetzt werden, wohingegen sie auf dem Bildschirm nach Abschluss des Makros korrekt erscheinen.
    Hier der Beispiel-Quelltext:


    VB.NET-Quellcode

    1. Option Explicit
    2. Sub check()
    3. Dim zaehler As Integer, oleObj As Object
    4. ' 2 Durchgänge, in denen jeweils am Ende gedruckt wird
    5. For zaehler = 0 To 1
    6. 'Checkboxen deaktivieren
    7. For Each oleObj In ActiveSheet.OLEObjects
    8. If oleObj.progID = "Forms.CheckBox.1" Then
    9. oleObj.Object.Value = False
    10. End If
    11. Next oleObj
    12. ActiveSheet.[A1].Value = "Checkbox deaktiviert"
    13. 'Beim 2. Durchgang soll eine Checkbox gesetzt werden
    14. If zaehler = 1 Then
    15. For Each oleObj In ActiveSheet.OLEObjects
    16. If oleObj.Name = "CheckBox_Gaertnerei" Then
    17. oleObj.Object.Value = True
    18. Exit For
    19. End If
    20. Next oleObj
    21. ActiveSheet.[A1].Value = "Checkbox aktiviert"
    22. End If
    23. 'Drucken und Wartezeit
    24. Application.Dialogs(xlDialogPrint).Show 'Durcken mit Dialogfeld
    25. Application.Wait (Now + TimeValue("0:00:01"))
    26. Next
    27. End Sub



    In diesem Beispiel kommen zwei Seiten mit jeweils unbetätigter Checkbox raus, obwohl sie im zweiten Durchlauf gesetzt wurde und nach Abschluss des Makros auch aktiviert ist im Tabellenblatt. Ob ich am Drucker oder als PDF drucke, spielt hierbei keine Rolle.

    Könnt ihr euch das erklären?

    Schon mal vielen Dank und Grüße aus Bayern
    Matthias

    Ach ja, zum Nachstellen einfach eine leere Excel-Datei erstellen, den Quelltext reinkopieren und im Arbeitsblatt ein "Kontrollkästchen" aus den ActiveX-Steuerelementen einfügen. Dem Steuerelement dann den Name 'CheckBox_Gaertnerei' geben.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „VBAExcel“ ()

    Auch wenn ich dieses Codekonstrukt etwas merkwürdig finde, kann ich den Fehler nicht bestätigen: 1. Seite ist mit 2x unchecked, 2. Seite ist mit 1x unchecked, 1x checked
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ich konnte es mittlerweile zum Glück selber lösen.
    Wen es interessiert bzw. wer selbst auch darüber stolpert:
    Man muss offenbar eine Zeitschleife einbauen, die die restlichen Tasks ausführen lässt:
    ...

    VB.NET-Quellcode

    1. start = Timer ' Anfangszeit setzen.
    2. Do While Timer < start + 2
    3. DoEvents ' Steuerung an andere Prozesse abgeben.
    4. Loop

    ...

    Jetzt entspricht der Ausdruck auch der Ausgabe auf dem Bildschirm.

    Grüße und trotzdem danke
    Matthias