[[20050513214206]] 『VBA:ウインドウ関連の扱い方について』(ぐっちょん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA:ウインドウ関連の扱い方について』(ぐっちょん)

はじめて投稿させていただきます。

WindowsXP EXCEL2000を使用しています。

VBAで下記を実現したいのですが、力を貸してください。

本命.xls(A〜Eシートまで存在)があり、Aシートにボタンを配置し、
そのボタンに以下のようなVBAを組みました。

●引用開始

    Application.ScreenUpdating = False '実行時動作の非表示

    '既に1つ以上のウインドウが開いている場合は1つ残して全て閉じる
    If Windows.Count > 1 Then
        Do Until Windows.Count = 1
            ActiveWindow.Close
        Loop
    End If

    ActiveWindow.NewWindow
    Windows("本命.xls:1").Activate
    '2つのウインドウを上下に並べて整列
    ActiveWorkbook.Windows.Arrange ArrangeStyle:=xlHorizontal
    Sheets("A").Select
    ActiveSheet.Range("C7").Select
    ActiveWindow.FreezePanes = True 'ウインドウ枠の固定
    Windows("本命.xls:2").Activate
    Sheets("B").Select
    ActiveSheet.Range("C7").Select

    ActiveWindow.FreezePanes = True 'ウインドウ枠の固定

    Application.ScreenUpdating = True '実行時動作の表示
●引用終了

実行後AシートとBシートが上下に並べて表示されます。
AとBの閲覧が終わったら、どちらかを手動で閉じて本命.xls
のウインドウのみとする前提です。

本命.xlsだけを開いている分にはいいのですが、本命.xlsで
作業している間に他のブックを開いたり、新規ブックを
作成するなど、本命.xls以外のブックのウインドウが存在すると、
Aシートのボタンをクリックした時に本命.xlsが閉じられてしまいます。

本命.xlsだけで作業する前提なら意図どおりに動くのですが、
他のブックを開いて本命.xls以外の作業したきたい時もあると思う
ので、他にいくつブックウインドウを同時に開いていても、
他のブックと本命.xlsのウインドウ1枚だけは残っている状態にしたい
のですがいい方法はないでしょうか?よろしくお願い致します。


 最小化の状態でよければ、こんな感じでしょうか。
Sub Test()
Application.ScreenUpdating = False
    For Each C In Workbooks
        MyBook = StrConv(C.Name, vbUpperCase)
        If MyBook <> "本命.XLS" And C.Name <> "PERSONAL.XLS" Then
            Windows(C.Name).WindowState = xlMinimized
        End If
    Next C
    For Each C In Workbooks
        MyBook = StrConv(C.Name, vbUpperCase)
        If MyBook <> "本命.XLS" And C.Name <> "PERSONAL.XLS" Then
            Windows(C.Name).WindowState = xlNormal
            Windows.Arrange ArrangeStyle:=xlHorizontal
            Application.ScreenUpdating = True
            Exit Sub
        End If
    Next C
End Sub

 (川野鮎太郎)


 もしかしたら勘違いしていたかもしれません。
 ご質問の本題はどこにあるのでしょうか。

 (1)複数のブックが開いているときでも『本命.xls』のブックだけを新しいウインドウを開いて整列させたい。
 『本命.xls』の2つのウインドウはC7セルでウインドウの固定をしたい。
 このときに他のブックは閉じたい。
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 (2)複数のブックが開いているときでも『本命.xls』のブックだけを新しいウインドウを開いて整列させたい。
 『本命.xls』の2つのウインドウはC7セルでウインドウの固定をしたい。

 (1)であれば、上記で書いたように全てのブック名を確認していく。
 該当しないブックだけ閉じるようにする。(上記では最小化にしてます)

 (2)であれば、ぐっちょんさんのコードの以下の部分が不要ですね。
    If Windows.Count > 1 Then
        Do Until Windows.Count = 1
            ActiveWindow.Close
        Loop
    End If

 (川野鮎太郎)


川野さま、丁寧なご回答ありがとうございます。
現在休日出社モード(泣)につき、取り急ぎご挨拶だけにさせていただきます。
まぎらわしい書き方で申し訳ありません。質問の本題は(2)でした。
ご指摘のコード部分は最後に追加したコードだったのですが、
追加した意図は本命.xlsで他にも新しいウインドウを手動で開いた時の
ためだったのですが、取り急ぎは不要だと思いますので
コメントにして作業しております。
いずれにしましても、もう少し具体的な作業イメージを精査
していろいろ試してから改めてお聞きすることになるかも
しれませんので、その時はよろしくお願い致します。

※初投稿ということで、通常の形式とは違うレスのつけ方に
戸惑いましたが、こういう編集も自由度が高くて便利ですね。
あの、でもすみません。改行はどうすればいいのでしょうか...(汗)


 >...改行はどうすればいいのでしょうか...
 文章の先頭に半角スペースを入れると、ほぼ書いたままの書き込みができます。
 ←こんな感じ。
 (kazu)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.