| 
    
     |  | Excel2003のVBAで一定時間間隔で処理を行うプログラムを考えています。 
 過去の質問箱やMicrosoftのページなどを調べ、OnTimeメソッドを使った
 下記のテストプログラム作ったところ、目的とする動作を行うことができ
 ました。
 ------------------------Test1ここから----------------------
 Type testType
 i As Integer
 B As String
 dummyFlag1 As Boolean  'Testでは使用しません
 dummyFlag2 As Boolean  'Testでは使用しません
 dummyFlag3 As Boolean  'Testでは使用しません
 End Type
 Dim A As testType
 
 Sub test()
 With A
 .i = 10
 .B = "ABC"
 End With
 TestOnTime
 End Sub
 
 Sub TestOnTime()
 If A.i > 0 Then
 Cells(1, A.i + 2) = A.B & CStr(A.i)
 A.i = A.i - 1
 Application.OnTime Now + TimeValue("00:00:3"), "'TestOnTime'"
 End If
 End Sub
 ------------------------Test1ここまで----------------------
 
 最終的には変数Aを引数としてTestOnTimeプロシージャに渡したいと考えて
 いるため、下記のプログラムに書き換えたのですが、動作しません。
 「マクロ"C:\...\test4.xls'!'TestOnTime "A""が見つかりません」
 のエラーが出ます。
 ------------------------Test2ここから----------------------
 Type testType
 i As Integer
 B As String
 dummyFlag1 As Boolean  'Testでは使用しません
 dummyFlag2 As Boolean  'Testでは使用しません
 dummyFlag3 As Boolean  'Testでは使用しません
 End Type
 
 Sub test()
 Dim A As testType
 With A
 .i = 10
 .B = "ABC"
 End With
 TestOnTime A
 End Sub
 
 Sub TestOnTime(A As testType)
 If A.i > 0 Then
 Cells(1, A.i + 2) = A.B & CStr(A.i)
 A.i = A.i - 1
 Application.OnTime Now + TimeValue("00:00:3"), _
 "'TestOnTime " & """A""" & "'"
 End If
 End Sub
 ------------------------Test2ここまで----------------------
 
 Application.OnTime Now + TimeValue("00:00:3"), _
 "'TestOnTime " & "" & A & "'"
 や
 Application.OnTime Now + TimeValue("00:00:3"), _
 "'TestOnTime " & """" & A & """'"
 だと、「型が一致しません」のコンパイルエラーが出ます。
 
 Aがint型やDate型などでは下記のテストプログラムで動作しました。
 ------------------------Test3ここから----------------------
 Sub test()
 Dim A As Date
 
 A = Now
 TestOnTime 10, A
 End Sub
 
 Sub TestOnTime(i As Integer, A As Date)
 If i > 0 Then
 Cells(1, i + 2) = A
 i = i - 1
 Application.OnTime Now + TimeValue("00:00:3"), _
 "'TestOnTime" & """" & i & """,""" & A & """'"
 End If
 End Sub
 ------------------------Test3ここまで----------------------
 
 
 ------------------------Test4ここから----------------------
 Sub test()
 TestOnTime 10
 End Sub
 
 Sub TestOnTime(i As Integer)
 If i > 0 Then
 Cells(1, i + 2) = CStr(i)
 i = i - 1
 Application.OnTime Now + TimeValue("00:00:3"), _
 "'TestOnTime " & "" & i & "'"
 '      "'TestOnTime " & """" & i & """'" ←こちらでも動作
 End If
 End Sub
 ------------------------Test4ここまで----------------------
 
 Type で作製した型ではOnTimeメソッドの引数にならないのでしょうか?
 
 |  |