エクセルのVBAに関する質問です。同じブックの別シートを画面分割して見せたり、隠したりしたいのですが、どうするといいのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/03/01 07:47:12
  • 終了:2010/03/04 14:35:48

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692010/03/01 08:20:36

ポイント27pt

VBAで行う場合、複数の関数の組み合わせで実現します。


新しいウインドウを開く

    ActiveWindow.NewWindow

アクティブなウインドウを閉じる

    ActiveWindow.Close

上下に整列させる

    Windows.Arrange ArrangeStyle:=xlHorizontal

整列を解除してウインドウいっぱいにする

    ActiveWindow.WindowState = xlMaximized

例えば、新しいシートを開いて上下に整列させて、シート2をアクティブにするなら

    ActiveWindow.NewWindow
    Windows.Arrange ArrangeStyle:=xlHorizontal
    Worksheet("シート2").Activate

アクティブなウインドウを閉じて、もう一つをいっぱいに開くには

    ActiveWindow.Close
    ActiveWindow.WindowState = xlMaximized

http://q.hatena.ne.jp/

その他の回答(2件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692010/03/01 08:20:36ここでベストアンサー

ポイント27pt

VBAで行う場合、複数の関数の組み合わせで実現します。


新しいウインドウを開く

    ActiveWindow.NewWindow

アクティブなウインドウを閉じる

    ActiveWindow.Close

上下に整列させる

    Windows.Arrange ArrangeStyle:=xlHorizontal

整列を解除してウインドウいっぱいにする

    ActiveWindow.WindowState = xlMaximized

例えば、新しいシートを開いて上下に整列させて、シート2をアクティブにするなら

    ActiveWindow.NewWindow
    Windows.Arrange ArrangeStyle:=xlHorizontal
    Worksheet("シート2").Activate

アクティブなウインドウを閉じて、もう一つをいっぱいに開くには

    ActiveWindow.Close
    ActiveWindow.WindowState = xlMaximized

http://q.hatena.ne.jp/

id:ken3memo No.2

ken3memo回答回数244ベストアンサー獲得回数762010/03/01 08:31:32

ポイント27pt

マクロ記録で ウインドウ--新しいウインドウを開く を記録して修正してみました。

テストしてみて下さい。

Sub Macro1() 'ウインドウの分割

    Dim strBookName As String
    
    strBookName = ThisWorkbook.Name  'ブックの名前を保存

    ActiveWindow.NewWindow  'メニュー ウインドウ--新しいウインドウを開く
    
    Windows(strBookName & ":1").Activate '元を指定 Book:1
    Range("A1").Select  '左上にカーソルをセット
    
    Windows.CompareSideBySideWith "Book1:2" '並べて表示モードで表示します

    Windows(strBookName & ":2").Activate 'コピーした先を指定 Book:2
    Range("A1").Select  '左上にカーソルをセット
    
End Sub

Sub Macro2() '分割解除

    Windows.BreakSideBySide '並べて比較を解除
    ActiveWindow.Close      '1:とか2:指定していないのでチョット危ないけど手抜き
End Sub

からくりは

ウインドウ--新しいウインドウを開く

book1:1 と book1:2 ができるので、並べて表示しただけです。

何かの参考となれば幸いです。

Excel 新しいウインドウを開く

http://support.microsoft.com/kb/254791/ja

http://www.trickpalace.net/windows/tips/excel.open.window.htm

http://win98.pasokoma.jp/3_2397

など..

id:Dark1984B No.3

黒ひよこ回答回数17ベストアンサー獲得回数02010/03/04 02:52:41

ポイント26pt

新しいウィンドウを開く/閉じる事で出来ると思います。

参考サイト(Excel 97~2003)

参考サイト(Excel 2007)


サンプルとしてExcel 2007でマクロに記録して、少し手を入れたモノを載せます。

参考にして下さい。

Sub 並列表示()
'変数定義
    Dim O1 As Object
'新しいウィンドウ開く
    ActiveWindow.NewWindow
'並べて表示
    Windows.Arrange ArrangeStyle:=xlVertical
'アクティブセルを指定
    For Each O1 In Windows
        Application.Goto O1.ActiveSheet.Range("A1")
    Next
End Sub

Sub 片方閉じる()
'片方ウィンドウ閉じる
    ActiveWindow.Close
'ウィンドウ最大化
    ActiveWindow.WindowState = xlMaximized
'アクティブセルを指定
    Application.Goto Range("A1")
End Sub
  • id:ken3memo
    私の回答 質問にあった シートの選択が抜けてた
    Sheets("シート名").Select
    などで、選択してください。

    肝心の 隠したり が抜けていたので、これを先に見ていたら開かないでください。
    朝から手間を取らせてスミマセン。
  • id:SALINGER
    回答では閉じるときにアクティブな方のウインドウを閉じるで書きましたが、
    アクティブに関わらず後から開いた方のウインドウを閉じる場合の方法としては、
    Windows(2)とかIndexでは駄目で、captionプロパティの一番右の文字が2とかで取得する方法が手っ取り早いかな。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません