
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ランキング
-
VBAでシート名を選んで転記する...
-
エクセルVBA Ifでシート名が合...
-
エクセルのシート名変更で重複...
-
VBA ThisWorkbookはSheet*で記...
-
エクセルvba ハイパーリンクに...
-
エクセルのマクロでアクティブ...
-
excelで新規作成されるシート名...
-
VBA 検索して一致したセル...
-
シートの枚数について
-
Codeがわかりません(自作の...
-
原本シート複写してリストの氏...
-
条件によってシート別に振り分...
-
excelのマクロで該当処理できな...
-
エクセルVBA ListBoxの並び...
-
月ごとに作成している日報ファ...
-
VBA WorksheetFunction.SumIfs...
-
excel vba
-
セルを指定してテキストファイル化
-
VBAで、シート間の転記するコー...
-
VBA初心者 シート名などについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excel チェックボックスにチェ...
-
VBA 検索して一致したセル...
-
エクセルで通し番号を入れてチ...
-
シートが保護されている状態で...
-
【VBA】特定の文字で改行(次の...
-
ExcelのVBAのマクロで他のシー...
-
Worksheet_Changeの内容を標準...
-
EXCELVBAを使ってシートを一定...
おすすめ情報