• ベストアンサー

VBAのタイマー

こんにちは VBAで、一日に一回起動するマクロを作ろうと思っています。 Sub timer() Dim settime As Variant Dim waittime As Variant settime = TimeValue("00:35:00") '指定時刻 waittime = TimeValue("00:01:00") settime = settime + waittime '指定時刻待ち時間 Application.OnTime TimeValue(settime), "sub" End Sub な感じなのですが、これだと一度起動すると二日目以降は動作しなくなります。 毎日起動するにはどうしたら良いものでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

#6-7に書いた回答者ですが、その内容で、パソコンで違う作業をしているときに、Excelが立ち上がり作業をすることは確認しています。 もう、あきらめてしまったのでしょうか? もし、そうなら、とても残念です。

BARUSANN
質問者

お礼

ありがとうございます。 今日まで、回答に気づきませんでした。 とりあえず、エクセルが起動したときに、"timer()"を起動する、 "sub"(名前は変えました)の最後に、エクセルを閉じるようにして、 タスクスケジュールにてエクセルを起動するように設定しました。 WSHについても、初めて聞きました。 今回いただいた、コードも参考にして、 今後取り入れて行きたいと思います。

その他の回答 (7)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

#6 の回答者です。 何も知らないで開けたら、ブックがしまってしまうので、修正したほうがよいようです。 Private Sub Workbook_Open() ・ ・  Beep   'ThisWorkbook.Close True  '←これは、WSH に移したほうがよいですね。    -------------------------- ''MyExcel.VBS Wscript.Sleep 2000 '2秒 .ThisWorkbook.Colse True '←これを入れる .Quit

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 #3の回答者です。 ものすごく、初歩的なのですが、改めて、実際に毎日動かすものに作り変えてみました。 コンパネのタスクで登録してください。Win の開いた状態で使うなら、  ログオンしている場合のみ実行する にチェックしてください。 本来は、Win XP ですと、そのまま、Excelファイルを指定してもよいはずですが、二重起動とか、画面の問題とか設定できるように、WSH プログラムにしました。以下のコード、画面がうっとうしいようでしたら、.Visible =FALSE にしてしまってください。 以下のメモ帳などで、拡張子を、.VBS として、 Excelのブック名は、以下は、TimerSetBook.xls なっている部分を変えてください。 ファイルのフォルダは、デフォルトフォルダ(DefaultFilePath)になっています。 なお、マクロの猶予時間を、以下では、Wscript.Sleep 2000 は、2000/1000ms 秒という計算になっています。開けている時間を設定してください。そのままにするなら、xlApp.Quit は必要ありませんが、不在の時などを考えると、終えたほうがよいと思います。 WSH (全角スペースは入れないでください、エラーになります) このファイル名を、タスクに入れてください。 --------------------------------------------------------- ''MyExcel.VBS ,WSH で動かす Dim xlApp Dim myPath Dim DefPath On Error Resume Next Set xlApp = Wscript.CreateObject("Excel.Application") If xlApp Is Nothing Then Set xlApp =Wscript.Getobject(, "Excel.Application") End If If Not xlApp Is Nothing Then myPath = xlApp.StartupPath DefPath = xlApp.DefaultFilePath With xlApp .Visible =TRUE 'アドインやPersonal.xls が必要なときは、ここに書き加える '.Workbooks.Open(myPath & \Personal.xls") .Workbooks.Open(DefPath & "\TimerSetBook.xls") Wscript.Sleep 2000 '2秒 .Quit End With End If Set xlApp = Nothing ----------------------------------------------- 実際のブック側のマクロは、 'ThisWorkbook モジュールに書き込みます。 Private Sub Workbook_Open() Dim i As Long   i = Sheet1.Range("A65536").End(xlUp).Offset(1).Row   Sheet1.Cells(i, 1).Value = Format$(Date + Time, "mm/dd hh:MM")   Beep   ThisWorkbook.Close True End Sub このコードを登録した後に、ブックを開くときには、Shift を押しながら開くと、ブックは閉じません。

  • lark_0925
  • ベストアンサー率63% (37/58)
回答No.5

一度こういうOntimeメソッドを使った繰り返し処理を使ったなら、次回に 同じ処理をしたいと思った時には、簡単なインタフェースで 実現できるようにマクロ化しておきます。 新規ブックの標準モジュール(module1)に '========================================================= Sub main()  '設定  Call mc_schedule(True, 5, TimeValue("00:00:05"), "TEST")   End Sub '=============================================================== Sub test()  '実際に実行するプロシジャー  [a1].Value = [a1].Value + 1 End Sub 別の標準モジュール(module2)に 繰り返し処理ルーチン '============================================= Private exetm As Variant '次の実行時刻 Private lmcnt As Long '繰り返し回数 Private ccnt As Long '現在の実行回数 Private reptm As Variant '実行間隔時間 Private prcnm As String '実行プロシジャー名 Sub mc_schedule(ByVal on_off As Boolean, _         Optional ByVal limit_cnt As Long = 0, _         Optional ByVal rep_time As Variant, _         Optional ByVal proc_name As String, _         Optional ByVal F_Exetm As Variant) 'マクロ実行のスケジュールの設定を行う 'input : on_off --- true スケジュール設定 false---スケジュール解除 ' limit_cnt 実行を繰り返す回数 0の場合は、制限なく繰り返す ' rep_time 実行間隔時間 ' proc_name 実行するプロシジャー名 ' F_Exetm 初回実行時間 省略すると、現在の時刻+実行間隔時間   On Error Resume Next   If on_off = True Then    reptm = rep_time    If limit_cnt <> -1 Then      lmcnt = limit_cnt      ccnt = 0      End If    If IsMissing(F_Exetm) Then      exetm = Now() + reptm    Else      exetm = F_Exetm      End If    prcnm = proc_name        End If   Application.OnTime EarliestTime:=exetm, Procedure:="mc_exec", Schedule:=on_off   On Error GoTo 0 End Sub '============================================================= Sub mc_exec() 'スケジュール設定されたプロシジャーを実行する   Dim wk As Variant   wk = Application.Run(prcnm)   ccnt = ccnt + 1   If lmcnt = 0 Or ccnt < lmcnt Then    Call mc_schedule(True, -1, reptm, prcnm)    End If End Sub これでmainを実行してみてください。 セルA1に1を足すというtestというプロシジャーを 5秒間隔で5回実行します。 Sub main()  dim 初回実行時刻 as date 初回実行時刻=timevalue("xx:xx:xx") ' ↑これは、例です  Call mc_schedule(True, 0, TimeValue("24:00:00"), "TEST",初回実行時刻)   End Sub なんてすると、毎日実行してると思います(テストしてませんが) まずは、短い間隔でテストしてみてください。

BARUSANN
質問者

お礼

ありがとうございます スケジュールオンをして、 もう一度読み込みなおせば良いのか・・・・・ 実行回数・次回実行時間・前回実行時間等、 今後取り入れて行けば、より便利なシステムなりそうです。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.4

毎日同じ時間にエクセルのマクロを実行させるには#1の後半の手順を踏めば可能です。 実際にやった人が言うんだから間違いないです。

BARUSANN
質問者

お礼

ありがとうございます。 実際にいろいろやってみた結果、 ようやく、おっしゃられている意味が理解できました。 日付をまたぐことができないので、 別日に立ち上げる・実行する・終了する を繰り返せば良かったんですね。 別日に立ち上げると言う部分の方法が思いつかなかったために、 すぐにあきらめると言ってしまった事を反省しています。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 >これだと一度起動すると二日目以降は動作しなくなります。 最初に、そのご質問のマクロでは、次の日というよりも、一回きりのOnTime のマクロですよね。(^^; 当たり前ですよね。 それと、ヘルプには、 「指定された時刻 (特定の日時、または特定の期間の経過後) にプロシージャを実行します。」 と書いてありますね。 そのままのマクロなら、マクロが終了した後に、もう一度、OnTime を呼び出せばよいだけのはずですが。(ただし、開きっぱなしの場合です) >settime = settime + waittime '指定時刻待ち時間 OnTime で、待ちを入れるなら、 Application.OnTime TimeValue settime, "Test", wiattime というところでしょうか? "sub" という名称は一般的にはまずいかな? 最初に話は戻りますが、少し、ややこしい使い方を考えると、どのみち、Excelのソフトは閉じてしまうわけですから、Excelファイルの Workbook_Open イベントなどに、マクロ自体を登録しておいて、それを、コマンドラインのATコマンドに登録しておくとか、タスクに入れ、数分前にExcelを起動させ(Excelが安定するまで、少し時間を置かせる方がよい)、毎日で登録させておくとか、その時間、Excelを開いているとぶつかるので、WSHで、オートメーション・オブジェクトにするとか、方法はいくつかあると思いますね。 今は、試していないから、細かい部分で違う(Excel起動時とそうでないときの違いなどの)部分があると思いますが、もともと、「明示的に(意図してマクロを使う)」使う分には、別に、そんなに難しい話ではないと思います。 以下は、端に実験的なマクロで、本来は、TimerTest を呼び出す、Sub Auto_Open か、WorkBook_Open に登録します。以下は、上記で述べたように、Excel の外に設定したほうがよいので、現実的なマクロではありません。必ず、マクロが起動されたら、翌日に設定し、実行するだけのものです。 例: '標準モジュールがベター '----------------------------- Private myTime As Date Private WaitTime As Date Sub TimerTest() '設定用   WaitTime = TimeValue("00:01:00")   myTime = Date + 1 + TimeValue("0:35")   On Error Resume Next   Application.OnTime myTime, "my_Procedure", WaitTime   If Err.Number > 0 Then     MsgBox "設定は実行されませんでした。"   End If   On Error GoTo 0 End Sub Sub my_Procedure() '実行マクロ Dim i As Long   i = Sheet1.Range("A65536").End(xlUp).Offset(1).Row   Sheet1.Cells(i, 1).Value = Time   Call TimerTest '呼び出し End Sub Sub TimerCancel() '解除用   On Error Resume Next   Application.OnTime myTime, "my_Procedure", WaitTime, Schedule:=False   If Err.Number > 0 Then    MsgBox "設定していないか、解除されませんでした。", 48   Else    MsgBox Format$(myTime, "yy/mm/dd hh:MM") & "解除されました。", 64   End If   On Error GoTo 0 End Sub

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.2

日付けをまたぐことはできません。

BARUSANN
質問者

お礼

そうですか・・・・・ じゃぁあきらめます。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

日付をまたぐことは出来ません。 出来たとしても、パソコンは電源入れっぱなし、エクセル立ち上げっぱなし出ないと"SUB"は動きません。 ご希望の動きは、 実行前にパソコンを自動で起動して、ご使用のエクセルを自動で立ち上げて、時間指定のモジュールを自動で動かして、実行後パソコンをシャットダウンする。 と言う流れになると思います。

BARUSANN
質問者

補足

いや基本的に、立ち上げっぱなしにしようかと思っています。 立ち上げっぱなしにしても、どうもうまく行かないんです。いま、PCの時刻をぐりぐりしてるんですが・・・・・

関連するQ&A

  • Excel2003 VBAでタイマーを組んでマクロを走らせたいのですが

    Excel2003 VBAでタイマーを組んでマクロを走らせたいのですが、以下のエラーメッセージが出ました。 マクロ "C:\aaa\Timer.xls'!Record1'が見つかりません。 マクロは、Timer.xlsブックのThisWorkbookに記述しています。 ---------------------------------------------------------------------- Sub timer1() 指定時刻 = TimeValue("09:00:00") 終了時刻 = TimeValue("11:00:00") Application.OnTime 指定時刻, "Record1" End Sub ---------------------------------------------------------------------- Sub Record1() Dim sh1, sh2 If TimeValue(Now) >= 終了時刻 Then '終了時刻になら終わる MsgBox "終了時刻になりました。" Application.CutCopyMode = False Exit Sub End If Set sh1 = Worksheets("1") Set sh2 = Worksheets("2") sh1.range("G5:G506").Copy 'コピー sh2.range("Q5:Q506").PasteSpecial Paste:=xlValues Selection.Offset(0, 2).Select '2行ずらす 指定時刻 = Now + TimeValue("00時05分00秒") '5分後 Application.OnTime 指定時刻, "Record1" End Sub ---------------------------------------------------------------------- どこを直せばよろしいのでしょうか? よろしくお願いします。

  • OnTimeを使ったのですが「エラー」になってしまいます

    VBA でOnTimeの「サンプル」を使ってのタイマーですが、実行すると次のようなエラーが出て、実行マクロへ行けません。 「マクロ"I:\一定時間後に.xls'!実行マクロ名'が見つかりません。」 どうしてなのか教えてください。 Option Explicit Dim 待ち時間 Dim 指定時刻 Sub 一定の時間間隔でマクロを実行する() 指定時刻 = Now + TimeValue("0時00分05秒") '5秒後 待ち時間 = TimeValue("0時00分01秒") Application.OnTime TimeValue(指定時刻), "実行マクロ名", TimeValue(待ち時間) End Sub Sub 実行マクロ名() Dim wavfile As String wavfile = "C:\Windows\Media\ringin.wav " 'wavファイルのパス Shell "mplay32.exe /play /close " & wavfile End Sub

  • セルの現在時刻表示の更新間隔をセルから入力したい

    セルの現在時刻表示の更新間隔をセルから入力したい マクロは以下を使用してますが更新間隔変更のtimevalue(c3)とするとエラー13が出ます。 どなたかお教え下さい。 ******************************************** Sub Auto_Open() Dim TargetTime, WaitTime TargetTime = Now + TimeValue("00:00:01") WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub Macro1() Dim TargetTime, WaitTime Calculate TargetTime = Now + TimeValue("00:00:01") 'ココをセルにするとエラー13がでる WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub auto_close() Dim i As Integer, TargetTime On Error Resume Next For i = 1 To 10 TargetTime = Now + TimeValue("00:00:" & Application.Text(i, "00")) Application.OnTime TargetTime, "Macro1", , False Next i End Sub **********************************************

  • EXSEL OnTime

    OnTimeを使ったタイマーですが、サンプルを利用して実行させると次のようなエラーになってしまいます。 「マクロ’I:¥一定時間後にxls'実行マクロ'が見つかりません。」 なにか設定する事項でもあるのでしょうか? Option Explicit Dim 待ち時間 Dim 指定時刻 Sub 一定の時間間隔でマクロを実行する() 指定時刻 = Now + TimeValue("0時00分05秒") '5秒後 待ち時間 = TimeValue("0時00分01秒") Application.OnTime TimeValue(指定時刻), "実行マクロ名", TimeValue(待ち時間) End Sub Sub 実行マクロ名() Dim wavfile As String wavfile = "C:\Windows\Media\ringin.wav " 'wavファイルのパス Shell "mplay32.exe /play /close " & wavfile End Sub

  • エクセルのマクロのタイマー機能について

    エクセルのマクロのタイマー機能について エクセルのマクロで指定した時間ごとにURLをクリックするマクロを作っています。 下記のように作っていますが、もっと簡略化して短い記述にしたく思います。 URLと指定時間は別のマクロで生成して、URLはA1~A49まで、指定時間はB1~B490までセルに書きこむようにしています。 URLはA49まで読んだらA1から読み直して10往復して、490回使用します。 使用するセルを一回ごとにずらしていくだけなので、簡単に出来そうな気もしますが、マクロ初心者のためわかりません>< 恐れ入りますが、ご教授いただければ幸いです。 ちなみにエクセル2007で作成しています。 Sub 一定の時間間隔でマクロを実行する() '進捗状況を示すために準備する 指定時刻 = Now + TimeValue("0時00分05秒") 待ち時間 = TimeValue("0時00分01秒") Application.OnTime TimeValue(指定時刻), "新規01", TimeValue(待ち時間) End Sub Sub 新規01() Range("A1").Select 'A列のURLを取得 Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True 指定時刻 = Now + Range("B1").Value 'B列の時間を取得 待ち時間 = TimeValue("0時00分01秒") Application.OnTime TimeValue(指定時刻), "新規02", TimeValue(待ち時間) End Sub Sub 新規02() Range("A2").Select Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True 指定時刻 = Now + Range("B2").Value 待ち時間 = TimeValue("0時00分01秒") Application.OnTime TimeValue(指定時刻), "新規03", TimeValue(待ち時間) End Sub         ↓    同様の記述を490回繰り返す         ↓ Sub 新規建設490() Range("C1").Value = Now & " 終了" End Sub Private Sub 進捗状況を示すために準備する() Cells.Clear Columns("A:A").NumberFormatLocal = "yyyy/m/d h:mm:ss" Range("A1").Select ActiveCell.Value = Now & " 開始       " Columns("A:A").EntireColumn.AutoFit End Sub

  • シート選択について

    いつもお世話になっております。 エクセルでシートを定時(4回)データを更新させ、 更新までの間、シートを自動で選択していくPGを作成したのですが、 エクセルを開くと固まってしまいます。 どうかご指導のほどよろしくお願いします。 Private Sub WorkBook_Open() Dim Update1 As Variant Dim Update2 As Variant Dim Update3 As Variant Dim Update4 As Variant Dim Owarijikan As Variant Call DataLoad Update1 = ("08:00:00") Owarijikan = Update1 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update1), "DataLoad" Update2 = ("10:00:00") Owarijikan = Update2 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update2), "DataLoad" Update3 = ("15:00:00") Owarijikan = Update3 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update3), "DataLoad" Update4 = ("16:00:00") Owarijikan = Update4 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update4), "DataLoad" End Sub 'DataLoadはデータ更新のプロシージャです。 -------------------------------- Sub SheetLoop() Dim Jikan As Variant Dim Owarijikan As Variant Jikan = Time Owarijikan = Sheet8.Cells(5, 3).Value Do Until Jikan > (Owarijikan) Application.OnTime TimeValue(Jikan), "Select11" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "SelectC" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "Select12" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "Select13" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "SelectC" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "Select16" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "SelectC" Jikan = Jikan + TimeValue("0:0:05") Loop End Sub ’実行するプロシージャSelectXXはシートを選択するプロシージャです。 以上よろしくお願いします。

  • 指定日時にプログラムを起動させたい。

    指定日時にプログラムを起動させようと考えています。 これを実現するにあたり、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 以上 お手数ですが、よろしくお願い致します。

  • 「一定の時間間隔で5秒毎にマクロを実行する」

    Timer関数を使ったループ 「一定の時間間隔で5秒毎にマクロを実行する」 ようにしてMacro1を実行したいのですが、 うまくいきません。どう改変したらいいでしょうか。 Sub Macro2() Dim tt As Double Dim wt As Double tt = Now + TimeValue("00:00:05") '5秒後 wt = TimeValue("00:00:01") 'インターバル1秒 Application.OnTime TimeValue("00:00:05"), "Macro1", TimeValue("00:00:01") End Sub

  • Excel VBAでセルに書いた時刻を取得したいのに・・・

    ExcelのVBAで、OnTimeを使い、 定時に印刷させるプログラムを組んでいます。 今までOnTimeの時刻設定に直接時刻を入れ込んでいたのですが、 ワークシートに登録した時刻を使うようにしたいと思い、 次のようにしたのですが、 Setのところの変数名で「オブジェクトが必要です」エラーが出ます。 ・・・何が悪いのでしょうか? Dim routinetime1 As String Dim routinetime2 As String Dim routinetime3 As String Set routinetime1 = Range("A1").Value Set routinetime2 = Range("B2").Value Set routinetime3 = Range("C3").Value Application.OnTime TimeValue(routinetime1), "印刷プロシージャ" Application.OnTime TimeValue(routinetime2), "印刷プロシージャ" Application.OnTime TimeValue(routinetime3), "印刷プロシージャ" よろしくお願いいたします。

  • On Timeメソッド?で更新されません。

    On Timeメソッド?で更新されません。 現在Web上にあった例を参考に 下記の様にホワイトボード解析シートのA1セルに 20秒ごとに現在時刻を表示させています。 これを応用して、違うシートに 17:00に天気というマクロを実行するよう 作成したのですが上手くいきませんでした。 Sub Auto_Open()とSub auto_close()のtargetTimeを targetTime = TimeValue("17:00") Macro7を天気 としたのですが、なぜ更新されなかったか分かる方がいらっしゃいましたら ご教授下さい。 Sub Auto_Open() Dim TargetTime, WaitTime TargetTime = Now + TimeValue("00:00:01") WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro7", WaitTime End Sub Sub Macro7() On Error Resume Next Worksheets("ホワイトボード解析").Range("A1").Calculate Application.OnTime Now + TimeValue("00:00:20"), "Macro7", TimeValue("00:00:10") '↑TimeValueの最初の方をへんこうする事で時間が変わる End Sub Sub auto_close() Dim i As Integer, TargetTime On Error Resume Next For i = 1 To 10 TargetTime = Now + TimeValue("00:00:" & Application.Text(i, "00")) Application.OnTime TargetTime, "Macro7", , False Next i End Sub

専門家に質問してみよう