■解答例
よくエラーチェックのマクロの際に上画面がエラー画面で下がエラーの該当シートみたいな使い方で複数ウィンドウは使いますねぇ。
1画面だと切り替えた時になんだっけ??
ってことになってしまうので複数ウィンドウの方がUI的に優しくてよいですよねぇ。
では、ウィンドウサイズやブックのサイズの取得等するのでそこらへんのまとめをしておきます。
□ウィンドウサイズの状態変更
オブジェクト.WindowState
※ウィンドウサイズを変更禁止することのできるEnableResizeプロパティでFalseになっているとエラーになります
□ウィンドウサイズの取得
オレンジ色の領域は、下記で取得できます。
Application.Width
Application.Height
赤色の領域は、下記で取得できます。
Application.UsableWidth
Application.UsableHeight
□ブックのサイズ・位置の取得
ActiveWindow.Width
ActiveWindow.Height
ActiveWindow.Top
ActiveWindow.Left
□ブックのタイトル
ActiveWorkbook.Name
ActiveWindow.Caption
どちらも、新しいウィンドウで複数になっていなければ同一の値を返します。
例)SampleCode.xls の場合
・ActiveWorkbook.Name
⇒SampleCode.xls
・ActiveWindow.Caption
⇒SampleCode.xls
新しいウィンドウで複数ウィンドウを開いていると
例)SampleCode.xls:1 / SampleCode.xls:2
・ActiveWorkbook.Name
⇒SampleCode.xls
・ActiveWindow.Caption
⇒SampleCode.xls:1
⇒SampleCode.xls:2
4行目:FileName変数 アクティブブックの名前格納用
5行目:アクティブブック名取得
6行目:ウィンドウを最大化する
9行目:Count変数 マクロ実行中のウィンドウの数を格納する用
i変数 For文で使用
10行目:For文でブック名を走査する
11行目:IF文の条件について…
FileName = Windows.Item(i).Caption
⇒ファイルが一つの時用の条件
0 < InStr(Windows.Item(i).Caption, FileName & ":"
⇒新しいウィンドウを開いて複数になった時用の条件
13行目:マクロ実行中のファイルと同じブックがあった時にカウントする
15行目:繰返し
17行目:マクロ実行中のブックが3つになるようFor文で新しいウィンドウを開く
22行目:AppWidth変数 ウィンドウの内側の幅を格納する用、
AppHeight変数 ウィンドウの内側の高さを格納する用
23行目:ウィンドウの内側の幅を取得
24行目:ウィンドウの内側の高さを取得
26~34行目:SampleCode.xls:1のブックを走査
ブックの状態を普通 ブックの幅をウィンドウの内側の幅と同じにする
ブックの高さをウィンドウの内側の高さの30%にする
ブックの位置(左側)を0にする ブックの位置(上側)を0にする
ブックをアクティブにする(シートを選択する為)
シート名(AAA)を選択
36~44行目:SampleCode.xls:2のブックを走査
ブックの状態を普通
ブックの幅をウィンドウの内側の幅と同じにする
ブックの高さをウィンドウの内側の高さの30%にする
ブックの位置(左側)を0にする
ブックの位置(上側)を内側の高さの30%にする
ブックをアクティブにする(シートを選択する為)
シート名(BBB)を選択
46~54行目:SampleCode.xls:3のブックを走査
ブックの状態を普通
ブックの幅をウィンドウの内側の幅と同じにする
ブックの高さをウィンドウの内側の高さの30%にする
ブックの位置(左側)を内側の幅の50%にする
ブックの位置(上側)を内側の高さの30%にする
ブックをアクティブにする(シートを選択する為)
シート名(CCC)を選択
よくエラーチェックのマクロの際に上画面がエラー画面で下がエラーの該当シートみたいな使い方で複数ウィンドウは使いますねぇ。
1画面だと切り替えた時になんだっけ??
ってことになってしまうので複数ウィンドウの方がUI的に優しくてよいですよねぇ。
では、ウィンドウサイズやブックのサイズの取得等するのでそこらへんのまとめをしておきます。
□ウィンドウサイズの状態変更
オブジェクト.WindowState
定数 | 内容 |
xlMaximized | 最大化 |
xlNormal | 通常表示 |
xlMinimized | 最小化 |
□ウィンドウサイズの取得
オレンジ色の領域は、下記で取得できます。
Application.Width
Application.Height
赤色の領域は、下記で取得できます。
Application.UsableWidth
Application.UsableHeight
□ブックのサイズ・位置の取得
ActiveWindow.Width
ActiveWindow.Height
ActiveWindow.Top
ActiveWindow.Left
□ブックのタイトル
ActiveWorkbook.Name
ActiveWindow.Caption
どちらも、新しいウィンドウで複数になっていなければ同一の値を返します。
例)SampleCode.xls の場合
・ActiveWorkbook.Name
⇒SampleCode.xls
・ActiveWindow.Caption
⇒SampleCode.xls
新しいウィンドウで複数ウィンドウを開いていると
例)SampleCode.xls:1 / SampleCode.xls:2
・ActiveWorkbook.Name
⇒SampleCode.xls
・ActiveWindow.Caption
⇒SampleCode.xls:1
⇒SampleCode.xls:2
- Option Explicit
- Sub SampleCode()
- Dim FileName As String
- FileName = ActiveWorkbook.Name
- Application.WindowState = xlMaximized
- 'マクロ実行中のウィンドウがいくつあるかカウントする
- Dim Count As Integer, i As Integer
- For i = 1 To Windows.Count
- If FileName = Windows.Item(i).Caption _
- Or 0 < InStr(Windows.Item(i).Caption, FileName & ":") Then
- Count = Count + 1
- End If
- Next
- For i = 1 To 3 - Count
- ActiveWindow.NewWindow
- Next
- Dim AppWidth As Double, AppHeight As Double
- AppWidth = Application.UsableWidth
- AppHeight = Application.UsableHeight
- With Windows(FileName & ":1")
- .WindowState = xlNormal
- .Width = AppWidth
- .Height = AppHeight * 0.3
- .Left = 0
- .Top = 0
- .Activate
- End With
- Sheets("AAA").Select
- With Windows(FileName & ":2")
- .WindowState = xlNormal
- .Width = AppWidth / 2
- .Height = AppHeight * 0.7
- .Left = 0
- .Top = AppHeight * 0.3
- .Activate
- End With
- Sheets("BBB").Select
- With Windows(FileName & ":3")
- .WindowState = xlNormal
- .Width = AppWidth / 2
- .Height = AppHeight * 0.7
- .Left = AppWidth / 2
- .Top = AppHeight * 0.3
- .Activate
- End With
- Sheets("CCC").Select
- End Sub
5行目:アクティブブック名取得
6行目:ウィンドウを最大化する
9行目:Count変数 マクロ実行中のウィンドウの数を格納する用
i変数 For文で使用
10行目:For文でブック名を走査する
11行目:IF文の条件について…
FileName = Windows.Item(i).Caption
⇒ファイルが一つの時用の条件
0 < InStr(Windows.Item(i).Caption, FileName & ":"
⇒新しいウィンドウを開いて複数になった時用の条件
13行目:マクロ実行中のファイルと同じブックがあった時にカウントする
15行目:繰返し
17行目:マクロ実行中のブックが3つになるようFor文で新しいウィンドウを開く
22行目:AppWidth変数 ウィンドウの内側の幅を格納する用、
AppHeight変数 ウィンドウの内側の高さを格納する用
23行目:ウィンドウの内側の幅を取得
24行目:ウィンドウの内側の高さを取得
26~34行目:SampleCode.xls:1のブックを走査
ブックの状態を普通 ブックの幅をウィンドウの内側の幅と同じにする
ブックの高さをウィンドウの内側の高さの30%にする
ブックの位置(左側)を0にする ブックの位置(上側)を0にする
ブックをアクティブにする(シートを選択する為)
シート名(AAA)を選択
36~44行目:SampleCode.xls:2のブックを走査
ブックの状態を普通
ブックの幅をウィンドウの内側の幅と同じにする
ブックの高さをウィンドウの内側の高さの30%にする
ブックの位置(左側)を0にする
ブックの位置(上側)を内側の高さの30%にする
ブックをアクティブにする(シートを選択する為)
シート名(BBB)を選択
46~54行目:SampleCode.xls:3のブックを走査
ブックの状態を普通
ブックの幅をウィンドウの内側の幅と同じにする
ブックの高さをウィンドウの内側の高さの30%にする
ブックの位置(左側)を内側の幅の50%にする
ブックの位置(上側)を内側の高さの30%にする
ブックをアクティブにする(シートを選択する為)
シート名(CCC)を選択
0 件のコメント:
コメントを投稿