Coding in support of this Thread



Code:
Option Explicit
' Module scope variable code section
Public Eye As Long
Private Jay As Long
Dim KEh As Long

' Main scheduling macro 1
Sub ByVal_GEhtitsAppObj_1()
1 Application.OnTime Now(), "'CalledByVal Eye, Jay, KEh'"
 Let Eye = 11: Let Jay = 12: Let KEh = 13

 Application.OnTime Now() + TimeValue("00:00:01"), "'WtchaGotModScopeVariables'"
End Sub

' Main scheduling macro 2
Sub ByVal_GEhtitsAppObj_2()
2 Application.OnTime Now(), "'CalledByVal Module1.Eye, Module1.Jay, Module1.KEh'"   '_--- Fix _ 2)   Module1.MyVariable
 Let Eye = 21: Let Jay = 22: Let KEh = 23
 
 Application.OnTime Now() + TimeValue("00:00:01"), "'WtchaGotModScopeVariables'"
End Sub

' Main scheduling macro 3
Sub ByRef_GEhtitsAppObj_3()
3 Application.OnTime Now(), "'CalledByRef Eye, Jay, KEh'"
 Let Eye = 31: Let Jay = 32: Let KEh = 33
 
 Application.OnTime Now() + TimeValue("00:00:01"), "'WtchaGotModScopeVariables'"
End Sub

' Main scheduling macro 4
Sub ByRef_GEhtitsAppObj_4()
4 Application.OnTime Now(), "'CalledByRef Module1.Eye, Module1.Jay, Module1.KEh'"    '_--- Fix _ 2)   Module1.MyVariable
 Let Eye = 41: Let Jay = 42: Let KEh = 43
 
'  Application.OnTime Now(), "'WtchaGotModScopeVariables'" ' ByRef is not working if this is done
 Application.OnTime Now() + TimeValue("00:00:01"), "'WtchaGotModScopeVariables'"     '_--- Fix _ 1)  to get ByRef to work
End Sub

Sub WtchaGotModScopeVariables()
 Debug.Print Eye & "  " & Jay & "    " & KEh & vbCr & vbLf
End Sub





Sub CalledByVal(ByVal I As Long, ByVal J As Long, ByVal K As Long)
 Debug.Print I & "  " & J & "    " & K
 Let I = I + 1000: Let J = J + 1000: Let K = K + 1000
End Sub
Sub CalledByRef(ByRef I As Long, ByRef J As Long, ByRef K As Long)
 Debug.Print I & "  " & J & "    " & K
 Let I = I + 2000: Let J = J + 2000: Let K = K + 2000
End Sub



'Results
' Macro 1
'  11  0    0
'  11  12    13
'
' Macro 2
'  21  22    23
'  21  22    23
'
' Macro 3
'
'  Fail!!!!!
'
'
' Macro 4
'  41  42    43
' 2041  2042    2043
'
'
'
'
'
'
'
'
'











































































































'
'
'
'
'
'
'
'
'
'
'

Sub GEhtitsAppObject()
1
2  Rem 1 Simple use of variables
  Let Eye = 31: Let Jay = 32: Let KEh = 33
3  Debug.Print Eye & "  " & Jay & "    " & KEh
  Let Eye = 41: Let Jay = 42: Let KEh = 43
4  Debug.Print Module1.Eye & "  " & Module1.Jay & "    " & Module1.KEh
5
6  Rem 2 Call ing Subs with variable arguments
  Let Eye = 71: Let Jay = 72: Let KEh = 73
7  Call CalledByVal(Eye, Jay, KEh)
  Let Eye = 81: Let Jay = 82: Let KEh = 83
8  Call CalledByVal(Module1.Eye, Module1.Jay, Module1.KEh)
9
  Let Eye = 101: Let Jay = 102: Let KEh = 103
10 Call CalledByRef(Eye, Jay, KEh)
  Let Eye = 111: Let Jay = 112: Let KEh = 113
11 Call CalledByRef(Module1.Eye, Module1.Jay, Module1.KEh)
12
13 Rem 3 Application.OnTime
  Let Eye = 141: Let Jay = 142: Let KEh = 143
14  Application.OnTime Now(), "'CalledByVal Module1.Eye, Module1.Jay, Module1.KEh'"
  Let Eye = 151: Let Jay = 152: Let KEh = 153
15  Application.OnTime Now(), "'CalledByVal Eye, Jay, KEh'"
16
  Let Eye = 171: Let Jay = 172: Let KEh = 173
17  'Application.OnTime Now(), "'CalledByRef Eye, Jay, KEh'"
  Let Eye = 181: Let Jay = 182: Let KEh = 183
18  Application.OnTime Now(), "'CalledByRef Module1.Eye, Module1.Jay, Module1.KEh'"
19
End Sub







'20 Rem 4 Application.Run
'  Let Eye = 211: Let Jay = 212: Let KEh = 213
'21 Application.Run "CalledByVal", Eye, Jay, KEh
'  Debug.Print Eye & "  " & Jay & "    " & KEh
'
'  Let Eye = 221: Let Jay = 222: Let KEh = 223
'22 Application.Run "CalledByVal", Module1.Eye, Module1.Jay, Module1.KEh
'  Debug.Print Eye & "  " & Jay & "    " & KEh
'23
'
'  Let Eye = 241: Let Jay = 242: Let KEh = 243
'24 Application.Run "CalledByRef", Module1.Eye, Module1.Jay, Module1.KEh
'  Debug.Print Eye & "  " & Jay & "    " & KEh
'
'  Let Eye = 251: Let Jay = 252: Let KEh = 253
'25 Application.Run "CalledByRef", Eye, Jay, KEh
'  Debug.Print Eye & "  " & Jay & "    " & KEh
'
'End Sub
'    Sub CalledByVal(ByVal I As Long, ByVal J As Long, ByVal K As Long)
'     Debug.Print I & "  " & J & "    " & K
'     Let I = I + 1000: Let J = J + 1000: Let K = K + 1000
'    End Sub
'    Sub CalledByRef(ByRef I As Long, ByRef J As Long, ByRef K As Long)
'     Debug.Print I & "  " & J & "    " & K
'     Let I = I + 2000: Let J = J + 2000: Let K = K + 2000
'    End Sub