dポイントプレゼントキャンペーン実施中!

エクセル2003です。

検索してヒットしました下記のVBAなのですが、処理結果は希望した状態になるものの、VBAが途中で止まってしまう状態になります。

正常に終了させるには、どうすればいいのでしょうか。

■全てのシート(シート名任意)のアクティブセルをA1にする

Sub auto_open()
Dim r As Long, sh As Worksheet
For Each sh In Worksheets
sh.Activate
ActiveSheet.Select
r = Selection.Row
ActiveWindow.SmallScroll Up:=r
Cells(1, 1).Select
Next
End Sub

※実行すると5行目で止まり、実行時エラー1004 WorksheetクラスのSelectメソッドが失敗しました
 と表示されます。

A 回答 (1件)

こんにちは



EXCEL2007で検証したところ正常に動作しますが

sh.Activate
ActiveSheet.Select

はシートをアクティブにして、さらに選択するのは無駄なので

sh.Select

にしたらどうでしょうか?

Sub auto_open()

Dim r As Long, sh As Worksheet

For Each sh In Worksheets
sh.Select
r = Selection.Row
ActiveWindow.SmallScroll Up:=r
Cells(1, 1).Select
Next

End Sub
    • good
    • 0
この回答へのお礼

わかりました!

非表示シートがあったのが原因でした!
(他人が作ったファイルなので、非表示シートの存在そのものを知りませんでした)

改めてテストしてみたところ、いずれもエラーが出ることなく、希望の結果となりました。

nayuta_lotさんのご回答がヒントとなりまして、解決することができました。
大変助かりました、ご回答ありがとうございました。

お礼日時:2011/08/15 15:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!