
Excel2013のVBAで
Sub Sample1()
Sheets(Array("Sheet1", "Sheet3")).Select
End Sub
と何枚かのシートをグループ化しているとします。グループ化していないシートもあります。
ただし、これらのシートにはウィンドウ枠の固定をしています。
これらのグループ化を適応したシートのウインドウの位置を左上に戻して、枠を固定した外側も左上に戻したいです。左上になっても、固定化していないところは戻らなかったり、sheet1だけ戻ったりしてうまくいきません。
お願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
説明が難しいのですが、
例えば、
シートは選択出来ますが、
ウィンドウは選択(Select)出来ません。
大きく性格が違うオブジェクトであることを理解してください。
その上で、
Excel画面上のスクロールは、
Windowクラス配下のPaneオブジェクトの属性です。
なので、複数のシートを纏めて選択して作業グループにしたとしても、
スクロールについては、Windowオブジェクトごとにしか操作出来ません。
纏めて一発でスクロールしてくれるようなメソッドがあるのではないか、
という期待を持たれていたなら、残念ながら、ありません。
> これらのグループ化を適応したシートのウインドウの位置を左上に戻して、枠を固定した外側も左上に戻したいです。
ひとつひとつのシートをアクティブウィンドウ上でアクティブにしてから、
それぞれの第一のペイン(窓を構成する一枚の窓ガラス)に対して、スクロールをコマンドします。
方法は大きく分けて3つありますが、
その内2つ(Range.Select、または、Pane.ScrollRowとPane.ScrollColumn)は、
・ウィンドウ分割位置へスクロール=ペインの左上へ移動(を表示)
・ウィンドウ先頭(A1セル)へスクロール=シートの左上へ移動(を表示)
というように二段階で操作しなくてはならないという欠点があります。
なので、ここでは、Pane.LargeScroll メソッドを使った例を紹介します。
名前付き引数UpとToLeftには、それぞれ、「上へ」「左へ」スクロールするページ数
を意味しますが、この引数を、必要以上、十分に、大きな数値で指定しておきます。
これで、一度(一行)の処理で、お望みのようにスクロールできます。
前提条件として、複数シートを作業グループ化するところから、
書いておきます。
その点では、あえて無駄なことをしているテスト用のサンプルでしかありませんが、
前提条件以外の記述部分は実戦向きに書いたものです。
Sub Re8765522()
' ' === 前提条件 ===
' ' 複数シートのインッデックス配列を、
' ' それぞれ(オブジェクト名表記で直接参照する)シートオブジェクトから指定し
' ' 複数シートを一括選択→作業グループ化
' ' この方法なら、シート名の変更、シート並び順の変更に影響されずに選択できます
Sheets(Array(Sheet1.Index, Sheet2.Index, Sheet3.Index)).Select
' ' ▲Sheetsクラスです。Worksheetsクラスではありません。
' ' === 以上、前提条件 ===
Dim colSheets As Sheets ' Sheets型です。Worksheets型ではありません。
' ' 選択中の複数シート(Sheets コレクションオブジェクト)を変数に格納
Set colSheets = ActiveWindow.SelectedSheets
' ' アプリケーションの再描画を一時停止
Application.ScreenUpdating = False
Dim wst As Worksheet
' ' 選択中の複数シートを総当たり
For Each wst In colSheets
' ' それぞれのシートをアクティベイト
wst.Activate
' ' アクティブウィンドウの1stペインをスクロール
' ' ・ウィンドウ分割位置へスクロール=ペインの左上へ移動(を表示)
' ' ・ウィンドウ先頭(A1セル)へスクロール=シートの左上へ移動(を表示)
' ' 以上を同時に
ActiveWindow.Panes(1).LargeScroll Up:=100, ToLeft:=100
Next
' ' 選択中の複数シート の先頭シートをアクティベイト
colSheets(1).Activate
' ' アプリケーションの再描画を再開
Application.ScreenUpdating = True
End Sub
No.2
- 回答日時:
#1、cjです。
自己レス、訂正です。> ActiveWindow.Panes(1).LargeScroll Up:=100, ToLeft:=100
私の方で錯誤がありました。
必ずしもPaneに対して処理する必要はなかったです。
ActiveWindow.LargeScroll Up:=100, ToLeft:=100
のように書いても、この場合は問題なく処理されます。
従って、#1でのPaneに関する前段の説明も、不適当・不適切でした。
スミマセンが、説明文中にあるPane云々については無視してやってください。
あらためて説明しようとしても却って混乱を招きそうなので控えます。
失礼しました。
どうもありがとうございます。
前ので一応思い通りに動きましたが、訂正ありがとうございました。
こちらに変えても問題なく動作しましたので、こちらを使用します。
質問の締め切り前でよかったです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) Excel VBA マクロ 先頭行の固定とオートフィルター設定を全てのシートに適用したいです 1 2022/11/12 15:32
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) エクセルで 1行目の固定とE列までの固定ができますか? 7 2022/10/21 04:56
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルシートの見出しの文字...
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ハイパーリンクでジャンプした...
-
【ExcelVBA】マクロの入ったシ...
-
エクセル、特定のシートにパス...
-
エクセルで複数のシートに画像...
-
EXCELの図形(テキストボックス)...
-
EXCELで存在しないシート...
-
エクセルで、シートの名前を変...
-
ワークシートそのものの色を変...
-
別シートの文字列があったら現...
-
PowerQueryで行数の指定はでき...
-
エクセルのシー名を二段表示に...
-
(エクセル)Indirect関数で、ハ...
-
エクセルで誤ってF11キーを押す...
-
エクセルを開くとメニューバー...
-
エクセルの複数シートでのリン...
-
Wordで差し込み印刷時に表示す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
特定のシートのみ再計算させな...
-
EXCELの図形(テキストボックス)...
-
エクセルで複数のシートに画像...
-
エクセルのファイルサイズが急...
-
エクセル、特定のシートにパス...
-
Accessのテーブルを既存のExcel...
-
エクセルのシー名を二段表示に...
-
エクセルの2つのシートを並び...
-
EXCELで存在しないシート...
-
エクセルの複数シートでのリン...
-
エクセルで、シートの名前を変...
-
EXCELの「シートの見出し」のフ...
-
Wordで差し込み印刷時に表示す...
-
ワークシートそのものの色を変...
-
エクセルを開くとメニューバー...
-
エクセル、別のシートの表をポ...
おすすめ情報