• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2003 VBAでタイマーを組んでマクロを走らせたいのですが)

Excel2003 VBAタイマーでマクロ実行エラー

このQ&Aのポイント
  • Excel2003のVBAでタイマーを組み合わせてマクロを実行したいが、エラーメッセージが表示される。
  • マクロが見つからないエラーメッセージが表示される。
  • どの部分を修正すれば良いかわからない。

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

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

どちらかというと、Timer1() は、標準モジュールで Auto_Open() のほうがよいです。 以下を参考にしてみてください。 たぶん、DDEかOLEでデータを入れていると思いますが、データが入ってくる時とぶつかることを考えたら、Time Lapse は30秒でよいからいれたほうがよいですね。 >Selection.Offset(0, 2).Select '2行ずらす これは意味が分かりません。 おそらく、2列置きにデータを入れると解釈しました。 以下のコードは、深夜0時をまたぐ場合には向いていません。Now にするか、TimeSerial の部分にDate を加えてください。 'ThisWorkbookよりも、標準モジュールのほうが、このようなコードでは効率がよいです。 Dim 指定時刻 As Date '←モジュールの先頭に入れる Dim 終了時刻 As Date Dim i As Long Sub timer1() 'Auto_Open()   指定時刻 = TimeSerial(09, 0, 0)   終了時刻 = TimeSerial(11, 0, 0)   Application.OnTime 指定時刻, "Record1", 指定時刻 + TimeSerial(0, 0, 30) End Sub Sub Record1() Dim sh1 As Worksheet, sh2 As Worksheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2")   If Time >= 終了時刻 Then '終了時刻になったら終わる   MsgBox "終了時刻になりました。", 64   Set sh1 = Nothing: Set sh2 = Nothing   Exit Sub  End If  'コピー列を2列ずつ動かす。  sh2.Range("Q5:Q506").Offset(, i * 2).Value = sh1.Range("G5:G506").Value  ''sh2.Range("Q5:Q506").Value = sh1.Range("G5:G506").Value 'そうでないならこちらを使う  i = i + 1  指定時刻 = Time + TimeSerial(0, 5, 0) '5分後  Application.OnTime 指定時刻, "Record1", 指定時刻 + TimeSerial(0, 0, 30) End Sub

zaq_zaq_zaq
質問者

お礼

私のやりたい事のマクロをバッチリ書いて頂き大変感謝してます。 マクロを絶えず起動していてもPC重たくならずに快適です。 とても勉強になりました。 ありがとうございます。

その他の回答 (2)

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.2

Record1がThisWorkbookクラスにある場合、以下の通り変更してください。 Application.OnTime 指定時刻, "Record1"      ↓ Application.OnTime 指定時刻, "ThisWorkbook.Record1"

zaq_zaq_zaq
質問者

お礼

エラーでなくなりました。 ありがとうございます。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

Sub Record1()を標準モジュールに入れてください。

zaq_zaq_zaq
質問者

お礼

Sub Record1()を標準モジュールにいれたらエラーがなくなりました。 ありがとうございます。

関連するQ&A

専門家に質問してみよう