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でも可視セルの一番左上隅でも良いと思います。
勤務先などの文化によっては、ある程度ニーズがあると思うのですが、なんだか難しいのです。
調査・試行錯誤の後で上記のマクロを作ってみましたが、手順が素直でないだけでなく、グラフなどワークシート以外のシートがある場合の対応もできていません。
もっと上手い人の解決法を知りたく投稿します。何卒よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
#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には出来ない。
No.3
- 回答日時:
[やりたいこと]をやると
こんな感じ?
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
回答ありがとうございました。
Worksheets(1).Select
・表示されている1番目のシートがグラフだった場合に選択されない。
・表示されている1番目のシートの前に非表示のシートがあるとエラーになる。
No.1
- 回答日時:
複雑なやり方を使わずとも
標準モジュールに
Sub test01()
Dim sh As Worksheet
For Each sh In Worksheets
'MsgBox sh.Name
sh.Select
Range("A1").Activate
Next
End Sub
ーーーーーーーー
実行後、どれもシートのセルをクリックしないよう気をつけて、シートタブの法をクリックして、確認のこと。
回答ありがとうございました。
sh.Select
これでは、非表示のシートがあるとエラーになります。グラフでエラーが出ないのは良いんですけど。
・表示されている1番目のシートを選択した状態にする。
これが上手く伝わらなかったようです。失礼しました。
1番目のシートとは、1番左のシートという意味です。
補足
使用しているのはExcel2003です。
本日気づいたのですが、グラフはスクロールバーを動かして保存しても次に開いた時にそのスクロールバーの位置が記憶されないようです。なのでグラフに関しては特に「カーソル位置を先頭にする」という動作は必要ではないです。オプション設定に依存するものも多いようですし。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのマクロでアクティブ...
-
特定の文字を含むシートだけマ...
-
ユーザーフォームに入力したデ...
-
VBA 検索して一致したセル...
-
シートが保護されている状態で...
-
VBA 最終行まで数式をコピーする
-
XL:BeforeDoubleClickが動かない
-
実行時エラー1004「Select メソ...
-
特定の文字を含むシートを選択...
-
VBAでシート名を選んで転記する...
-
VBAを用いて繰り返し自動的...
-
実行時エラー'1004': WorkSheet...
-
ExcelVBA:複数の特定のグラフ...
-
Excel VBA で自然対数の関数Ln...
-
VBAの天才来てください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
ブック名、シート名を他のモジ...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
【Excel VBA】Worksheets().Act...
-
実行時エラー1004「Select メソ...
-
Excelマクロのエラーを解決した...
-
エクセル・マクロ シートの非...
-
VBAで同じシート名のコピー時は...
-
ExcelのVBAのマクロで他のシー...
-
【VBA】色のついたシート名を取得
おすすめ情報