I do not think this works.
I declared the variable numPrintOrder in a module 15 (one where the variable
is used in a procedure) thusly,
Option Explicit
Public numPrintOrder as integer
----------------------------------------
The value of numPrintOrder is set from the values entered in .textboxes on
frmUserForm8.
Private Sub butPrintOK_Click()
Dim numCopiestoPrint As Integer
Dim numPagestoPrint As Integer
Dim numPrintOrder As Integer
With frmUserForm10
If txtNumCopies.Value = "0" Then
numCopiestoPrint = 1
ElseIf txtNumCopies.Value <> "" Then
numCopiestoPrint = txtNumCopies.Value
Else
numCopiestoPrint = 1
End If
If txtNumPages.Value = "0" Then
numPagestoPrint = 0
ElseIf txtNumPages.Value <> "" Then
numPagestoPrint = txtNumPages.Value
Else
numPagestoPrint = 0
End If
End With
numPrintOrder = 100 * numPagestoPrint + numCopiestoPrint
------------------
I tried calling frmUserForm10 from code module 15, like this:
Option Explicit
Public numPrintOrder as Integer
Public Sub PrintCurrentPage() <-----Here???
Dim strWshName As String
Dim numCopiestoPrint As Integer
Dim numPagestoPrint As Integer
frmUserForm10.Show
strWshName = ActiveSheet.name
numCopiestoPrint = numPrintOrder Mod 100
numPagestoPrint = (numPrintOrder - numCopiestoPrint) / 100
If numPagestoPrint = 0 Then numPagestoPrint = 1
ActiveSheet.PrintOut _
From:=1, To:=numPagestoPrint, _
Copies:=numCopiestoPrint
End Sub
--------------------------------------------
This did not work. After fmUserForm 10 closed, the value of numPrintOrder is
0.
To get the value of numPrintOrder into the PrintCurrentPage procedure, I
split it in two after the frmUserForm10.show command and added a statement,
call PrintCurrentPage2(numPrintOrder)
This works. the printer control information entered in form 10 is entered in
the parameters of the PrintOut method.
---------------------------------
What is the problem here? How does one define a global variable in a code
module, set the value of the variable in a procedure within a form, and then
have the value of the variable be within scope inside a different procedure
in a code module?
As indicated above, I was only able to transfer the value of the variable as
set in the form procedure to the procedure in the code module, by calling it
with the variable as an input parameter. This hardly qualifies as being a
'global' variable.
Thanks in advance.
John Wirt
Call PrintCurrentPage2(numPrintOrder)