• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Waarom drukt mijn macro de sheet twee keer af?

Status
Niet open voor verdere reacties.

tomswaelen

Gebruiker
Lid geworden
8 dec 2004
Berichten
349
Ik heb onderstaande macro die een sheet genaamd 'Form' unhidet, afdrukt (via de uitgebreide printer dialog), en dan die sheet opnieuw verbergt. Als ik de macro uitvoer, laat hij echter de printer dialog een tweede keer zien nadat ik een eerste keer heb afgedrukt.

Hoe komt dit?

Code:
Sub PrintOut()

Sheets("Form").Visible = True
Sheets("Form").Select
If Application.Dialogs(xlDialogPrint).Show = True Then
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1
End If
Sheets("Form").Visible = False
Sheet1.Select


End Sub
 
Ik zie de dialoog maar 1x verschijnen.
 
Waarom niet zo?

Code:
Sub PrintOut()
  With Sheets("Form")
    .Visible = True
    If Application.Dialogs(xlDialogPrint).Show = True Then .PrintOut
    .Visible = False
  End With
End Sub
 
Omdat het commando Application.Dialogs(xlDialogPrint).Show al direct gaat afdrukken bij klikken op OK.
 
Omdat het commando Application.Dialogs(xlDialogPrint).Show al direct gaat afdrukken bij klikken op OK.

Dat begrijp ik niet. Dat is toch net de bedoeling ook? :)

Ook in andere variaties op de macro print ik trouwens twee keer erg raar. Voor testdoeleinden heb ik wel PDF printer van Windows gebruikt, zou het daaraan liggen?
 
Het kleinere printerscherm mag trouwens ook, maar daar kan je het aantal kopies niet kiezen. Ik moet het aantal kopies kunnen kiezen, daarom koos ik voor het uitgebreide printscherm.

Eventueel kan ik in de sheet zelf iets voorzien voor het aantal pagina's, maar hoe pas ik de code dan aan?

Code:
If Application.Dialogs(xlDialogPrinterSetup).Show = True Then
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1
End If

Wordt dit dan zoiets als:

Code:
If Application.Dialogs(xlDialogPrinterSetup).Show = True Then
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=Range("A48")
End If
 
Nog een poging dan.

Deze regel toont het afdrukdialoogvenster, als de gebruiker op OK klikt gebeuren er twee dingen: Het commando geeft de waarde "True" terug en er wordt afgedrukt:
Code:
If Application.Dialogs(xlDialogPrint).Show = True Then
Omdat de Show methode True kreeg, kom je nu op het volgende statement:
Code:
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1
dat dus een tweede afdruk veroorzaakt!
 
Ok, gesnopen :)

Uiteindelijk heb ik het met het kleine printscherm gedaan, en voor het aantal kopieën verwezen naar de sheet zelf:

Code:
  With Sheets("Form")
    .Visible = True
    If Application.Dialogs(xlDialogPrinterSetup).Show = True Then
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=Range("C12")
    End If
    .Visible = False
  End With
  Sheets("Data").Select
 
Waarom dan niet ?

Code:
Sub M_snb()
    Application.Dialogs(8).Show
End Sub

Er kan toch geen niet-zichtbaar werkblad deel uitmaken van een selectie ?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan