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:
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.
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
- Option Explicit
- Sub check()
- Dim zaehler As Integer, oleObj As Object
- ' 2 Durchgänge, in denen jeweils am Ende gedruckt wird
- For zaehler = 0 To 1
- 'Checkboxen deaktivieren
- For Each oleObj In ActiveSheet.OLEObjects
- If oleObj.progID = "Forms.CheckBox.1" Then
- oleObj.Object.Value = False
- End If
- Next oleObj
- ActiveSheet.[A1].Value = "Checkbox deaktiviert"
- 'Beim 2. Durchgang soll eine Checkbox gesetzt werden
- If zaehler = 1 Then
- For Each oleObj In ActiveSheet.OLEObjects
- If oleObj.Name = "CheckBox_Gaertnerei" Then
- oleObj.Object.Value = True
- Exit For
- End If
- Next oleObj
- ActiveSheet.[A1].Value = "Checkbox aktiviert"
- End If
- 'Drucken und Wartezeit
- Application.Dialogs(xlDialogPrint).Show 'Durcken mit Dialogfeld
- Application.Wait (Now + TimeValue("0:00:01"))
- Next
- 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“ ()