|
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メソッドの引数にならないのでしょうか?
|
|