- 締切済み
エクセルVBA
VBAの素人です。 以下のようなVBAを実行しようと、何とか形にしました。 単独のBOOKではうまくいくのですが、同時に他のBOOKを開くと 「インデックスが有効範囲にありません」とエラーになります。 エラー箇所は、With Sheets("Sheet1").Range("B1")部分です。 修正をご教示頂ける方、何卒よろしくお願い致します。 全くVBA無知なのにすみません。 Private Sub Workbook_Open() test01 test02 Application.OnTime Now + TimeValue("00:10:00"), "終了" End Sub Sub 終了() Application.OnTime Now + TimeValue("0:00:02"), "test01", , False ThisWorkbook.Close Savechanges:=False Application.Quit End Sub Sub test01() With Sheets("Sheet1").Range("B1") .Value = Time .NumberFormatLocal = "mm:ss" End With Application.OnTime Now + TimeValue("0:00:02"), "test01" End Sub Sub test02() With Sheets("Sheet1").Range("B2") .Value = Time .NumberFormatLocal = "mm:ss" End With End Sub
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kero1192kero
- ベストアンサー率33% (3/9)
どのBookのSheet1なのか指定されてないからです。なので、シート名の前にWorkBooks(″ブック名″).を追加しブックを特定してあげましょう。
- cj_mover
- ベストアンサー率76% (292/381)
積極的に奨めるつもりはありませんので、 ただ、ご提示のコードについて現在の問題に対処する修正だけです。 修正点:★ 注意点;◆ ' ' ThisWorkbookモジュール Private Sub Workbook_BeforeClose(Cancel As Boolean) ' ★ Application.OnTime dtClose, "終了", , False ' ★ Application.OnTime Now, "終了" ' ★ End Sub ' ★ Private Sub Workbook_Open() test01 test02 dtClose = Now + TimeValue("00:00:10") ' ★終了のスケジュールを記録 Application.OnTime dtClose, "終了" ' ★ End Sub ' ' 標準モジュール Public dtClose As Date ' ★終了のスケジュールをキャンセルする為には正確な時刻が必要 Private dtNext As Date ' ★次のスケジュールをキャンセルする為には正確な時刻が必要 Sub 終了() Application.OnTime dtNext, "test01", , False ThisWorkbook.Close Savechanges:=False Application.Quit ' ←↑ ◆どちらか1行のみ有効 End Sub Sub test01() With ThisWorkbook.Sheets("Sheet1").Range("B1") ' ★ブックを指定 .Value = Time .NumberFormatLocal = "mm:ss" End With dtNext = Now + TimeValue("0:00:02") ' ★次のスケジュールを記録 Application.OnTime dtNext, "test01" ' ★ End Sub Sub test02() With ThisWorkbook.Sheets("Sheet1").Range("B2") ' ★ブックを指定 .Value = Time .NumberFormatLocal = "mm:ss" End With End Sub
お礼
全体にわたりご指導いただき、ご丁寧に有難うございました。
- kmetu
- ベストアンサー率41% (562/1346)
ThisWorkbook.Activate With ThisWorkbook.Sheets("Sheet1").Range("B1") にしてみてはいかがでしょう。
お礼
有難うございました。うまくいきました。
お礼
成功しました。有難うございました。 簡単だったんですね。こんなことも、分からず・・・でした。