Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Anzahl der zu druckenden Seiten ermittel

Betrifft: Anzahl der zu druckenden Seiten ermittel von: Frank Svoboda
Geschrieben am: 07.10.2020 22:01:54

Hallo zusammen,

das Zählen der zu druckenden Seiten ist ein altes Thema, ich weiß. In meinem VBA-Programm werden mehrere Worksheets gemeinsam ausgedruckt, wobei der User auswählen kann, welche. Dafür wird die Anzahl der Druckseiten ermittelt und bei sehr vielen Seiten der User gefragt, ob er wirklich drucken will. Für das Zählen setze ich die folgende Function ein:

Private Function PrintPagesCount(ByRef wss As Variant) As Integer
    Dim anz As Double, i As Integer, act As Worksheet
    Set act = ActiveSheet
    Application.ScreenUpdating = false
    For i = 0 To UBound(wss)
        Worksheets(wss(i)).Select
        anz = anz + ExecuteExcel4Macro("Get.document(50)")
    Next
    act.Activate
    Application.ScreenUpdating = true
    PrintPagesCount = CInt(anz)
End Function
wss ist dabei ein Array mit den Namen der Worksheets.

Das hat auch alles gut funktioniert – bis vor Kurzem. Plötzlich sind nach dem Zählen alle Buttons auf den betroffenen Seiten riesengroß – und ich habe garnichts am VBA geändert! Nicht nur die Buttons, sondern auch deren Anpacker sind riesengroß (sh. Screenshot). Am ScreenUpdating liegt's nicht – habe ich natürlich schon ausprobiert. Liegt das möglicherweise daran, dass Excel4-Macros nicht mehr ganz »kompatibel« sind? Oder hat jemand von Euch eine andere Idee?

Viele Grüße
Frank

Screenshots (File-Upload hat nicht funktioniert):




Betrifft: was sind denn das für Buttons?
von: Rudi Maintaire
Geschrieben am: 07.10.2020 23:34:28

Hallo,
ActiveX?
Die haben schon immer einen Knall. Manchmal werden die auch winzig klein.
Nimm Buttons aus den Formular-Steuerelementen.

Gruß
Rudi

Betrifft: AW: was sind denn das für Buttons?
von: Frank Svoboda
Geschrieben am: 08.10.2020 10:19:19

Hallo Rudi,

das sind Buttons aus den Steuerelementen und definitiv keine ActiveX. Das Seltsame ist, dass es 3 Tage anstandslos funktioniert hat. Ich habe zwar in der Zeit noch an der Datei weitergearbeitet, aber nicht am VBA – und das Backup von vor 3 Tagen macht jetzt den gleichen Fehler.

Als Workaround zähle ich jetzt die Anzahl der zu druckenden Worksheets, die bis auf 2 grundsätzlich 1 Seite lang sind. Und wenn eines dieser beiden längeren dabei ist, schreibe ich in der MsgBox »Der Druck enthält mehr als X Seiten.«

Trotzdem hätte ich gern gewusst, woran es liegt. Möglicherweise hatte ich, als es noch funktionierte, noch andere alte Excel-Dateien vom xls-Typ gleichzeitig geöffnet – die neue Datei ist xlsb-Typ. Habe auch in der Richtung schon geforscht, kann es aber nicht nachvollziehen.

Viele Grüße
Frank

Betrifft: AW: Anzahl der zu druckenden Seiten ermittel
von: Frank Svoboda
Geschrieben am: 08.10.2020 13:28:42

(Frage noch offen)

Betrifft: AW: Anzahl der zu druckenden Seiten ermittel
von: Herbert_Grom
Geschrieben am: 10.10.2020 12:01:12

Hallo Frank,

das Phänomen kenne ich zur genüge! Und eine Lösung gibt es nicht! Das ist eine von div. "Excel-Gemeinheiten"! Deshalb bin ich dazu übergegangen, das meistens mit Userforms zu lösen.

Servus

Betrifft: AW: Anzahl der zu druckenden Seiten ermittel
von: Frank Svoboda
Geschrieben am: 10.10.2020 15:32:23

Danke Herbert,

einige »Excel Gemeinheiten« habe ich ja auch schon erlebt, aber diese noch nicht.
Ich habe es bei meinem Workaround belassen – den Kunden stört das »mehr als« nicht.

Viele Grüße
Frank