プロが教えるわが家の防犯対策術!

Option Explicit
Sub hidari()
Dim i As Integer
For i = 0 To Worksheets.Count - 1
If Sheets(Worksheets.Count - i).Visible = True Then Application.Goto reference:=Sheets(Worksheets.Count - i).Cells(1, 1), scroll:=True
Next
End Sub

[やりたいこと]
・表示されている全シートについてカーソル位置を先頭(左上隅)にする。
・スクロールバーもそこに戻す。
・表示されている1番目のシートを選択した状態にする。
・1枚のブックに表示・非表示にかかわらず1枚以上のシートがある。

「先頭」はセルA1でも可視セルの一番左上隅でも良いと思います。
勤務先などの文化によっては、ある程度ニーズがあると思うのですが、なんだか難しいのです。
調査・試行錯誤の後で上記のマクロを作ってみましたが、手順が素直でないだけでなく、グラフなどワークシート以外のシートがある場合の対応もできていません。
もっと上手い人の解決法を知りたく投稿します。何卒よろしくお願いいたします。

A 回答 (3件)

#1です。

条件の見落としがあったようです。
グラフシートや非表示シートが有るとは。
Sub test01()
Dim sh As Worksheet
For Each sh In Worksheets
MsgBox sh.Name & sh.Visible
If sh.Visible = True Then
sh.Activate
sh.Range("A1").Select
End If
Next
Sheets(1).Activate
End Sub
グラフシートの場合は判れば考えてみます。
>1枚のブックに表示・非表示にかかわらず1枚以上のシートがある。
これはエクセルの条件では無かったですか。ブックのシート数を0には出来ない。
    • good
    • 0
この回答へのお礼

ありがとうございました。

Sheets(1).Activate

これで解決したようです。とりあえず実用上問題ないようなので。

お礼日時:2009/06/17 21:01

[やりたいこと]をやると


こんな感じ?

Sub Macro1()
Dim sh As Worksheet
For Each sh In Worksheets
If sh.Visible = True Then
Application.Goto reference:=sh.Range("a1"), scroll:=True
Else
sh.Visible = True
Application.Goto reference:=sh.Range("a1"), scroll:=True
sh.Visible = False
End If
Next
Worksheets(1).Select
End Sub
    • good
    • 2
この回答へのお礼

回答ありがとうございました。

Worksheets(1).Select

・表示されている1番目のシートがグラフだった場合に選択されない。
・表示されている1番目のシートの前に非表示のシートがあるとエラーになる。

お礼日時:2009/06/17 21:02

複雑なやり方を使わずとも


標準モジュールに
Sub test01()
Dim sh As Worksheet
For Each sh In Worksheets
'MsgBox sh.Name
sh.Select
Range("A1").Activate
Next
End Sub
ーーーーーーーー
実行後、どれもシートのセルをクリックしないよう気をつけて、シートタブの法をクリックして、確認のこと。

この回答への補足

もっと上手い人の解決法を知りたく投稿します。何卒よろしくお願いいたします。

補足日時:2009/06/16 21:15
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

sh.Select

これでは、非表示のシートがあるとエラーになります。グラフでエラーが出ないのは良いんですけど。

・表示されている1番目のシートを選択した状態にする。
これが上手く伝わらなかったようです。失礼しました。
1番目のシートとは、1番左のシートという意味です。

補足

使用しているのはExcel2003です。

本日気づいたのですが、グラフはスクロールバーを動かして保存しても次に開いた時にそのスクロールバーの位置が記憶されないようです。なのでグラフに関しては特に「カーソル位置を先頭にする」という動作は必要ではないです。オプション設定に依存するものも多いようですし。

お礼日時:2009/06/16 21:15

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