
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
----------------------------------------------------------------------
どこを直せばよろしいのでしょうか?
よろしくお願いします。
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
私のやりたい事のマクロをバッチリ書いて頂き大変感謝してます。
マクロを絶えず起動していてもPC重たくならずに快適です。
とても勉強になりました。
ありがとうございます。
No.2
- 回答日時:
Record1がThisWorkbookクラスにある場合、以下の通り変更してください。
Application.OnTime 指定時刻, "Record1"
↓
Application.OnTime 指定時刻, "ThisWorkbook.Record1"
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA で PCの 時刻を サーバー時...
-
どうして
-
エクセルで早朝深夜労働時間を...
-
午後11時59分って何時? 昼の11...
-
標準時間と117の時間の10秒のずれ
-
電線等の入線潤滑材の代用品っ...
-
Accessの重複なしのカウントの...
-
[MS Access]クエリで変換 hhmm...
-
8時間以上だったら1時間マイ...
-
時刻どおり
-
【VBA】CSV読込_特定行を無視する
-
時刻と時間を明確に区別したい...
-
電車の空調が効きすぎると高齢...
-
【電気】バケット車の正しい停...
-
特急や新幹線の領収書から 乗っ...
-
北海道のJR花咲線(根室本線の釧...
-
前日に切符を購入した際領収書...
-
特急あずさっていつまでキャン...
-
JR特急わかしお号について
-
車掌のアナウンスで業務連絡の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どうして
-
VBA で PCの 時刻を サーバー時...
-
午後11時59分って何時? 昼の11...
-
[MS Access]クエリで変換 hhmm...
-
電線等の入線潤滑材の代用品っ...
-
エクセルで早朝深夜労働時間を...
-
Accessの重複なしのカウントの...
-
8時間以上だったら1時間マイ...
-
標準時間と117の時間の10秒のずれ
-
iPhoneのボイスメモ
-
SL(DL)やまぐち号 津和野行きの...
-
[h]:mm形式→10進法への変換
-
京都に223系を入れたのは、221...
-
サンライズエクスプレスの通過時刻
-
ゆいレールの3両編成の時刻を教...
-
画像ファイルのコピー先での日...
-
アルファエックス
-
JR時刻検索に付いて教えて下さ...
-
時間とは? 国語辞典で調べたら...
-
京成千葉駅に京成3050形8両って...
おすすめ情報