[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ワークブックのサイズ変更について』(hsi)
いつもお世話になっております。
エクセルを開いた時に全画面表示をして2つ目のファイル3つ目のファイルと
それぞれ、Window画面の設定をおこなっているのですが、
3つ目のブックに限り全画面のままワークシートをWindowsに合わせて表示させました。
なお、3つ目のブックを開いた時は、1つ目も2つ目も開いたままの状態に
なっています
ソースの内容は以下の通りです。
(全てブックを開いた時に実行されるようになっています)
「1つ目」
Dim myCBCtrl As CommandBarControl
Application.DisplayFullScreen = True '全画面表示(Windows) With ActiveWindow .WindowState = xlMaximized '最大化表示(BOOK) .DisplayGridlines = False '枠線の非表示 .DisplayHeadings = False '行列番号非表示 End With
For Each myCBCtrl In CommandBars("Standard").Controls '---使用可能/使用不可能を切り替える myCBCtrl.Enabled = Not myCBCtrl.Enabled Next
「2つ目」
Dim myCBCtrl As CommandBarControl
Application.DisplayFullScreen = True '全画面表示する
For Each myCBCtrl In CommandBars("Standard").Controls '---使用可能/使用不可能を切り替える myCBCtrl.Enabled = Not myCBCtrl.Enabled Next
'ワークシートメニューバー Application.CommandBars("Worksheet Menu Bar").Enabled = True 'Application.CommandBars("Worksheet Menu Bar").Enabled = False
With ActiveWindow .WindowState = xlMaximized '最大化表示 .DisplayGridlines = False '枠線の非表示 .DisplayHeadings = False '行列番号非表示 End With
「3つ目」
With ActiveWindow .WindowState = xlNormal 'ノーマル表示 .Top = 0 .Left = 0 .Height = Application.UsableHeight .Width = Application.UsableWidth .DisplayGridlines = False '枠線の非表示 .DisplayHeadings = False '行列番号非表示 End With
3つ目のブックは2つ目のブックからVBAにより新規でファイルを作成し開いた状態に
している為、3つ目のブックは右上に表示されている×ボタンで閉じるように
したいと思いました。
※3つ目のブックを閉じた時、2つ目のブックがアクティブになるので、
2つ目のブックに以下のように記述してみましたが改善されませんでした。
Private Sub Worksheet_Activate()
Dim myCBCtrl As CommandBarControl
Application.DisplayFullScreen = True '全画面表示する
For Each myCBCtrl In CommandBars("Standard").Controls '---使用可能/使用不可能を切り替える myCBCtrl.Enabled = Not myCBCtrl.Enabled Next
'ワークシートメニューバー Application.CommandBars("Worksheet Menu Bar").Enabled = True 'Application.CommandBars("Worksheet Menu Bar").Enabled = False
With ActiveWindow .WindowState = xlMaximized '最大化表示 .DisplayGridlines = False '枠線の非表示 .DisplayHeadings = False '行列番号非表示 End With
End Sub
何が起こっているのかというと、3つとも動作上問題ないのですが、
3つ目のブックを開いた時に1つ目と2つ目も3つ目の画面設定が反映されてしまい
ます。
根本的にやり方が間違っていると思っているのですが、
Web上で調べているとこれといったものが見つからなかった為、
この場をお借りしました。
やりたい事は、1つ目も2つ目も全画面表示で3つ目のみWindowに合わせて表示
したいと思います。
たぶん、上記の記述だと1つ目だけを設定すると後に開いたブック全てに
反映されるものだと思いますので、対象のブックのみに反映するものがあればと
思います。
以上ご教授の程、よろしくお願いいたします。
すみません。 何がやりたいのか解っていません。 ↓を応用できませんか? BJ
Dim Wb As Workbook For Each Wb In Workbooks Wb.Activate MsgBox Wb.Name & "を最小化します。"
Windows(Wb.Name).WindowState = xlMinimized
MsgBox Wb.Name & "を最小化しました。" Next
説明が下手で申し訳ありません。
簡単に言うと、最初と2番目に開いたファイルを全画面表示(.WindowState = xlMaximized )に
したまま最後に開いたファイルを通常表示(WindowState = xlNormal)にしたいのです。
参考に書いていただいたコードを以下のように編集して、最後に開くファイルに記述しましたが、
結果が同じで最初と2番目に開いたファイルも反映されました。
Dim Wb As Workbook For Each Wb In Workbooks
Wb.Activate MsgBox Wb.Name & "を最小化します。"
Windows(Wb.Name).WindowState = xlNormal Windows(Wb.Name).Top = 0 Windows(Wb.Name).Left = 0 Windows(Wb.Name).Height = Application.UsableHeight Windows(Wb.Name).Width = Application.UsableWidth
'MsgBox Wb.Name & "を最小化しました。"
Next
このコードを書いて気がついたのが、
1番目のファイルを最小化にします。
2番目のファイルを最小化にします。
3番目のファイルを最小化にします。
とダイアログが立ち上がりました。
考え方から(間違っていなければですが・・・)開いてるファイル全てを
アクティブウィンドウとしてコードが全てのファイルに適用しているようなので
ファイル名を指定して画面サイズを変更するようなコードがあればこの問題は
解決できるという事でしょうか?
申し訳ありませんが、よろしくお願いいたします。
(hsi)
>開いてるファイル全てを >アクティブウィンドウとしてコードが全てのファイルに適用しているようなので
アクティブにしたのは、目で見て確認しやすいだろうという理由だけです。 実際にはしなくてもいいです。 全てするか振り分けるかは、自分の判断で振り分けてください。
Dim wb1 As Workbook, wb2 As Workbook For Each wb1 In Workbooks Set wb2 = wb1 Next MsgBox "最後に開いたブック " & wb2.Name Set wb2 = nothing
非表示ブックに関しては考慮してません。 BJ
上記のコードに一部追記してみましたが、結果は同じでした。
それとも、コードの書き方が間違えてるのでしょうか?
結果:コードは最後に開いたファイルを指定して画面サイズを変更したように
見えましたが、実際は全てのファイルも最後の画面サイズの変更が適用さ
れてしましました。
記述したコードは以下の通りです。
Dim wb1 As Workbook, wb2 As Workbook For Each wb1 In Workbooks Set wb2 = wb1 Next MsgBox "最後に開いたブック " & wb2.Name wb2.Activate Windows(wb2.Name).WindowState = xlNormal Windows(wb2.Name).Top = 0 Windows(wb2.Name).Left = 0 Windows(wb2.Name).Height = Application.UsableHeight Windows(wb2.Name).Width = Application.UsableWidth Set wb2 = Nothing
何度も申し訳ありませんが、よろしくお願いします。
追記:
大変申し訳ありません。
OS:Windows2000
Office:2000
今までのやり取りで出来ると思っていたんだけど。 たぶんこんな感じ?。 BJ
Dim lstNo As Long, wb As Workbook lstNo = Workbooks.Count For Each wb In Workbooks Cnt = Cnt + 1 With Windows(wb.Name) If Cnt = lstNo Then .WindowState = xlNormal .Top = 0 .Left = 0 .Height = Application.UsableHeight .Width = Application.UsableWidth Else .WindowState = xlMaximized '最大化表示(BOOK) .DisplayGridlines = False '枠線の非表示 .DisplayHeadings = False '行列番号非表示 End If End With Next
私がみてもわかりやすいコード書いてくれて助かります。
しかし、このコード最後に開くブックを確認のあと、変数に代入し、
条件 Cnt = lstNo (3=3)の時ノーマル表示でそれ以外は最大化表示と
してくれたのにも関わらず、結果が今までと同じというのが、悲しいですね。
お手数をおかけして申し訳ありませんでした。
これに関してはクローズという事にします。
今回の件でいろいろなやり方(記述)があり本当にVBAはおくが深いですね。
ありがとうございました。
(hsi)
未だに何をしたいのか見えてこないんだけど。 いくら初めの方のブックを全画面にしても、最後にノーマル戻せば、 最後以外のブックを選択しても、全画面になりはしないでしょうね。 エクセルが別プロセスなら可能かもしれませんけど。 BJ
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.