指定日時にプログラムを起動させたい。
指定日時にプログラムを起動させようと考えています。
これを実現するにあたり、Application.OnTime 指定時刻,プログラム
とすれば良さそうだと考えました。
-------------------------------------------------------
Application.OnTime DateValue(MyGoDate) + TimeValue(MyGoTime), "一括実行.xls!All_Execute_Click"
-------------------------------------------------------
ところが、次の手順で指定日時を作成すると「実行時エラー13型が一致しません」のエラーが出てしまいます。
指定時刻には、必ずバリアント型を指定するとのことで、
「指定時刻 = DateValue("2007/08/31") + TimeValue("07:30:00")」
次の手順で作成されたものが、バリアント型になっていないことが原因かと思います。
▼質問・お願い
1)「実行時エラー13型が一致しません」のエラーを回避するには、どうしたらよいでしょうか。
2)指定日時にプログラムを起動させるより良いコードがあれば、教えて頂けませんでしょうか。
▼手順
-------------------------------------------------------
(1)ワークシートのセルに指定日時を入力。
指定日時を入力すると数値になるため、WorksheetFunction.Text((Cells(*, *)), "00")で文字列に変換。
(2)次の変数に指定時刻の要素を格納。
GoYear :Cells(4, 2)に年を入力。
GoMonth:Cells(4, 4)に月を入力。
GoDay :Cells(4, 6)に日を入力。
GoHour :Cells(5, 4)に時を入力。
GoMin :Cells(5, 6)に分を入力。
GoSec : "00"を固定。
(3)DateValue("2007/08/31")、TimeValue("07:30:00")の( )の中身をつなげる。
MyGoDate = CStr(GoYear & "/" & GoMonth & "/" & GoDay)
▼作成したVBAコード
Sub 時刻設定()
'指定日時
Dim GoYear As Variant
Dim GoMonth As Variant
Dim GoDay As Variant
Dim GoHour As Variant
Dim GoMin As Variant
Dim MyGoDate As Variant
Dim MyGoTime As Variant
Const GoSec As Variant = "00" '秒は固定値。
GoYear = Cells(4, 2)
'月 mmに変換。
GoMonth = WorksheetFunction.Text((Cells(4, 4)), "00")
'日 ddに変換。
GoDay = WorksheetFunction.Text(Cells(4, 6), "00")
'時 hhに変換。
GoHour = WorksheetFunction.Text(Cells(5, 4), "00")
'分 mmに変換。
GoMin = WorksheetFunction.Text(Cells(5, 6), "00")
MyGoDate = CStr(GoYear & "/" & GoMonth & "/" & GoDay)
MyGoTime = CStr(GoHour & "/" & GoMin & "/" & GoSec)
Application.OnTime DateValue(MyGoDate) + TimeValue(MyGoTime), "一括実行.xls!All_Execute_Click"
End Sub
以上 お手数ですが、よろしくお願い致します。
お礼
早速UACを無効にして試してみたのですが、 ・・・やはりエラーが出てしまいました PLCのデータを表示する専用のシステムで、PLCと時刻を合わせる必要あるのですが。。。 別の方法を考えてみます。 アドバイスありがとうございました!