パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)
EXCELの表示、位置、大きさの設定
今回はEXCELの表示関係のVBAを集めてみました。
1 EXCELの表示、非表示、アイコン化
EXCELそのものを表すオブジェクトは、Applicationオブジェクトです。EXCELのオブジェクトの最上位に
位置するオブジェクトです。Applicationオブジェクトを表すには、Applicationプロパティを使います。
(1) EXCELを非表示にする
表示、非表示に関するプロパティは Visible です。
Aplication.Visible = False
とすると、EXCELが画面から消えます。
しかし、画面から消えても非表示になっているだけなので、EXCEL自体は起動されています。
もし、このことを確認したいなら、[Ctrl]+[Alt]+[Del] キーを押して見てください。
プログラムの強制終了の一覧に Microsoft Excel があるはずです。
さて、EXCELが画面から消えてしまうと、操作のしようがないので、これは困ってしまいます。
VBAマクロでまた、再表示してしてやらないといけません。
次のマクロは5秒間だけEXCELを消して、再表示するものです。(消えた直後と再表示の直前にBeep音
を鳴らします)
Sub invisible()
Application.Visible = False
Beep
Application.Wait (Now() + TimeValue("00:00:05"))
Beep
Application.Visible = True
End Sub
ま、これはあまり実用にはならないかもしれません。どちらかというと、EXCELを消してびっくりさせる
というお遊び用のマクロです。
(2) EXCELの表示(最大、ノーマル、アイコン)
実際に使うとしたら、EXCELを最大化したり、アイコン化したりというマクロではないでしょうか。
長時間かかるマクロを実行中は、EXCELをアイコン化しておいて、他の作業のために画面をあける
(なんておりこうさんなEXCEL!)などといった使い方があります。(ま、マクロ実行中は上のマクロで
EXCEL消してもいいけど。)
表示状態を表すプロパティは、 WindowState です。
EXCEL自体の最大化、アイコン化は以下のように記述します
最大化 | Application.WindowState = xlMaximaized |
通常の表示 | Application.WindowState = xlNormal |
アイコン化 | Application.WindowState = xlMinimized |
2 EXCELの表示位置、大きさの変更
もっと、細かくEXCELの表示位置、大きさを変更したいという場合は
Top(縦の位置),Left(横の位置),Height(EXCELの高さ),Width(横幅) プロパテイを使います。
下記のような関係です。
| | Top | | <-- Left--->|
|
設定は
Application.Top = 10
のように記述します。
設定する数値の単位は「ポイント」(=約0.35mm)です。
(1)画面の左隅、中央、画面外にEXCELを表示する
例えば、画面の左上の隅に合わせてEXCELを表示したいなら、次のようにします
Application.Top = 0
Application.Left = 0
Top
と Left の値には負の値も設定できます。
また、画面サイズからはずれるような値を設定すると、EXCELは画面に表示されません。
この方法でEXCELを画面から消すこともできます。例えば次のように設定します
Application.Top = -Application.Height
Application.Left = -Applicatiom.Width
EXCELを画面の中央に表示するマクロです。
Sub displaycenter()
Application.WindowState = xlMaximized
Hmax = Application.Height
Wmax = Application.Width
Application.WindowState = xlNormal
Application.Top = (Hmax - Application.Height) / 2
Application.Left = (Wmax - Application.Width) / 2
End Sub
(2)
EXCELのサイズ、表示位置をかえたお遊び
EXCELを左隅に表示した後、だんだん縮小させて、画面の左から右に移動させるマクロ
Sub size_location()
Application.WindowState = xlNormal
Application.Top = 0
Application.Left = 0
Application.Width = 500
Application.Height = 300
For i = 0 To 50
Application.Height = Application.Height - 4
Application.Width = Application.Width - 8
Next
For i = -200 To 500 Step 2
Application.Left = i
Next
End Sub
これは、ほんのお遊びです。EXCELのサイズ、表示位置を変えて見ている人をびっくりさせる、という
マクロです。