別のブックをアクティブにするとエラーが出てしまう

解決


きゅーぶ  2008-05-01 16:04:19  No: 139659  IP: 192.*.*.*

初めて書き込みします。よろしくお願いします。

エクセルで常に時間を更新しておき、指定の時間でエクセルの表にイベントを与える事をしたくてネットで調べたら以下のマクロを見つけ利用しました。

セルA1を=now()として

Sub timer()
With Worksheets("シート名1")
If .Cells(1, 2) <> "" Then Exit Sub
.Cells(1, 1).Calculate
End With
Application.OnTime Now + TimeValue("00:00:01"), "timer"
End Sub


このマクロでほぼ思い通りの事が出来るようになったのですが、複数のブックを開いているとき別のブックをアクティブにすると以下のエラーになってしまいます。

インデックスが有効範囲にありません。
>With Worksheets("シート名1")

これを回避するにはどうすればよいかお教えください。

出来ればtimerマクロを利用しているブックが非アクティブでも時間は更新しているという状態にしたいのですが。

よろしくお願いします。

編集 削除
魔界の仮面弁士  2008-05-01 16:09:48  No: 139660  IP: 192.*.*.*

マクロ起動時に、
  Dim wb As Workbook
  Set wb = ThisWorkbook
のようにして、現在のブックを変数にとっておき、
> With Worksheets("シート名1")
の代わりに
  With wb.Worksheets("シート名1")
などとして、どのブックのシートなのかを明示するようにするとか。

編集 削除
きゅーぶ  2008-05-01 16:20:54  No: 139661  IP: 192.*.*.*

魔界の仮面弁士さま早々の回答ありがとうございます。

教えていただいた方法で思い通りになりました。

感謝いたします!

またなにかありましたらよろしくお願いいたします。
ありがとうございました。

編集 削除