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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 16:59
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フリー wifi でwindowsの時刻が...
-
下の画像の問題の(2)なのですが...
-
iPhoneのボイスメモ
-
時刻表示について
-
アルファエックス
-
サンライズエクスプレスの通過時刻
-
Accessの重複なしのカウントの...
-
エクセル 時間計算 指定の時...
-
午後11時59分って何時? 昼の11...
-
SL(DL)やまぐち号 津和野行きの...
-
エクセルで分単位ガントチャー...
-
配達記録のみで、最短どのくら...
-
楽天RSS エクセル マクロVBA
-
8時間以上だったら1時間マイ...
-
わざとずらした時間調整
-
エクセルで減算タイマーを表示...
-
時刻どおり
-
英語のメール 題名
-
特急って全車指定席が基本なの...
-
無人駅では切符が買えません。 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessの重複なしのカウントの...
-
[MS Access]クエリで変換 hhmm...
-
アルファエックス
-
米原駅から栃木県足利市八幡町...
-
下の画像の問題の(2)なのですが...
-
8時間以上だったら1時間マイ...
-
iPhoneのボイスメモ
-
電線等の入線潤滑材の代用品っ...
-
午後11時59分って何時? 昼の11...
-
Excelでミリsecまでの2つの時...
-
エクセルで早朝深夜労働時間を...
-
時間と時刻の違い!?
-
標準時間と117の時間の10秒のずれ
-
[h]:mm形式→10進法への変換
-
エクセルVBAでタイマーコントロ...
-
エクセルのNow関数の時刻の更新...
-
サンライズエクスプレスの通過時刻
-
時間帯別作業時間についてエク...
-
SL(DL)やまぐち号 津和野行きの...
-
PC間の時刻同期コマンドが失敗...
おすすめ情報