• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA シートの移動について。)

Excel VBA シートの移動について

このQ&Aのポイント
  • Excel VBAを使用してシートの移動を行う際に、表示されているウィンドウのみが移動する方法を教えてください。
  • シートの構成は1から10までの番号と『メイン』のシートがあり、『メイン』以外は非表示にしています。現在の方法では、ウィンドウが2つに分割され、『メイン』のシートが表示されたまま移動してしまいます。
  • 使用していないシートを非表示にした状態を保ちつつ、実行したウィンドウのみが移動する方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.7

Sub sheet2() Dim window1 As Window Set window1 = ActiveWindow Sheets("1").Visible = False Sheets("2").Visible = True Sheets("3").Visible = False Sheets("4").Visible = False Sheets("5").Visible = False Sheets("6").Visible = False Sheets("7").Visible = False Sheets("8").Visible = False Sheets("9").Visible = False Sheets("10").Visible = False Application.Windows("test.xlsm:1").Activate Sheets("main").Select If window1.Caption <> "test.xlsm:1" Then Application.Windows("test.xlsm:2").Activate Sheets("2").Select Else Sheets("2").Select End If End Sub ごめんなさいこちらでごぜーやす!!

mzakom
質問者

お礼

できました!! 何度も丁寧な回答ありがとうございますm(_ _ )m

その他の回答 (6)

回答No.6

Sub Sheet2に移動() Sheets("1").Visible = False Sheets("2").Visible = True Sheets("3").Visible = False Sheets("4").Visible = False Sheets("5").Visible = False Sheets("6").Visible = False Sheets("7").Visible = False Sheets("8").Visible = False Sheets("9").Visible = False Sheets("10").Visible = False Sheets("main").Select If ActiveWindow.Caption <> "test.xlsm:1" Then Application.Windows("test.xlsm:2").Activate Sheets("2").Select Else Sheets("2").Select End If End Sub 両方とも切り替わっているのですが、Selectれてないだけですね これでいいと思います

回答No.5

Sub 2に移動()   With ActhiveWindow     Worksheets("2").Visible = True     ActiveSheet.Visible = False     Sheets("2").Select   End With End Sub シート分割してアクティブWindowだけを動かしたいということですね? これでどうですかね?

mzakom
質問者

補足

んー、違うんですよ。 アクティブウインドウにはなっているんですけど、実行したらアクティブじゃない方のウィンドウは再表示したシートに移動しちゃうんですよね。 でもアクティブなウインドウはセレクトしないと移動しないんです。 なんか仕様っぽいですね(・ω・` )

回答No.4

ExcelBook2つ開いて作業しているということですかね? 記述をWorkBook1.WorkSheet("2").Visible = TRUE でも同じ症状出ますかね??

回答No.3

http://officetanaka.net/excel/vba/sheet/sheet06.htm きっとこれの事言っているのですよね?

mzakom
質問者

補足

>マクロのコードで実行するとアクティブになりません。 ウインドウ2でマクロを実行するとウインドウ2では再表示してもアクティブにならないんですが、ウインドウ1ではなぜか再表示したシートがアクティブになるんです。 ブックを2つではなくて、一つのブック内で新しいウインドウを開き、シート別で表示している状態と言う事です。

回答No.2

それでしたら、ステップデバッグしましょ、F8で見ていくか、ブレークポイント置いて走らすかどちらかで、おかしい場所は特定できますので。

mzakom
質問者

補足

回答ありがとうございます。 F8でコードを追ってみたら Worksheets("2").Visible = True   '非表示のシートを表示 のところでなぜか『メイン』シートを表示しているウインドウ1が、『2』に移動します。実行しているのはウインドウ2のシート『1』の場所なのにです・・・ なぜでしょう・・・

回答No.1

原因はSheetが開いた順にシート番号が振られるためです。 この場合、シート名で移動させた方がバグは出にくいですね。 ActiveSheet.Visible = False ここも、メインがアクティブになっているなら、メインが隠れます。 シート名で指定したほうがいいです。

mzakom
質問者

補足

それがシート名で指定しても同じ現象が起こるのです(・ω・` ) あと不明なのですが、ウインドウ2を『メイン』にして、ウインドウ1でシート移動をしたら『メイン』は移動しませんでした。 なぜでしょう・・・・ 原因がさっぱりです