Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excel VBA スキルアップコレクション Topics  >     (31) Excelのステータスバーを制御する

 
(31) Excelのステータスバーを制御する

 Excelのステータスバーには様々な情報が表示されます。


 通常、ステータスバーのコントロールはExcelが行っています。次の図は、Excelが自動保存を実行している場合に表示するステータスバーのメッセージです。


 ステータスバーは、VBAプログラムを使ってコントロールすることができます。

 Excelブックを用意して、標準モジュールに次のコードを記載します。

 1行目:  Public Sub Sample_Statusbar_01()
 2行目:  
 3行目:      ' 現在のステータスバーの表示状態を保持する。
 4行目:      Dim statusBarVisible As Boolean
 5行目:      statusBarVisible = Application.DisplayStatusBar
 6行目:      
 7行目:      ' ステータスバーを表示する。
 8行目:      Application.DisplayStatusBar = True
 9行目:      
10行目:      ' ステータスバーに好きな文字を設定する。
11行目:      Application.StatusBar = "処理中です。お待ちください。(^_^v)"
12行目:      
13行目:      ' 5秒待機する。
14行目:      Application.Wait Now + TimeValue("00:00:05")
15行目:      
16行目:      ' ステータスバーを元に戻す。
17行目:      Application.StatusBar = False
18行目:      
19行目:      ' ステータスバーの表示状態を元に戻す。
20行目:      Application.DisplayStatusBar = statusBarVisible
21行目:  
22行目:  End Sub
 Sample_Statusbar_01()を実行すると、次のようになります。

 ここで使用したApplication.DisplayStatusBarプロパティとApplication.StatusBarプロパティを紹介します。
Application.DisplayStatusBarプロパティ
 Application.DisplayStatusBarは、ステータスバーの表示・非表示を表わすBoolean型のプロパティです。ステータスバーが表示されている場合はTrue、非表示の場合はFalseが設定されています。Excel2003でステータスバーをVBAからコントロールするには、まずこのプロパティをTrueにする命令が必要です。Excel2010、2007の場合、ステータスバーは常に表示されていて、表示・非表示を切替えるメニューはExcelのリボンに存在していません。このプロパティをあまり意識する必要がないといえます。
※Excel2010、2007の場合も、このプロパティにFalseを設定すればステータスバーを非表示にすることができます。しかし、それは特殊な操作方法だといえます。ステータスバーの表示を戻し忘れないように注意しなければなりません。
Application.StatusBarプロパティ
 Application.StatusBarは、ステータスバーに表示する文字列を表します。ステータスバーの制御がExcel側にある場合は"False"という文字列が設定されています。ステータスバーの文字列をVBAで操作するには、このプロパティに値を設定します。VBAでステータスバーを操作したのち規定値に戻したくなった場合は、Application.StatusBarに"False"という文字列を設定し直します。


 ステータスバーをプログレスバーのように利用することもできます。次がその例です。

 1行目:  Public Sub Sample_Statusbar_02()
 2行目:  
 3行目:      ' 現在のステータスバーの表示状態を保持する。
 4行目:      Dim statusBarVisible As Boolean
 5行目:      statusBarVisible = Application.DisplayStatusBar
 6行目:      
 7行目:      ' ステータスバーを表示する。
 8行目:      Application.DisplayStatusBar = True
 9行目:      
10行目:      ' ステータスバーをプログレスバー風に利用する。
11行目:      Dim lp As Long
12行目:      For lp = 1 To 10
13行目:      
14行目:          Application.StatusBar _
15行目:              = "処理中です" & String(lp, "■") _
16行目:                  & String(10 - lp, "□")
17行目:          
18行目:          ' 1秒待機する。
19行目:          Application.Wait Now + TimeValue("00:00:01")
20行目:      
21行目:      Next lp
22行目:      
23行目:      ' ステータスバーを元に戻す。
24行目:      Application.StatusBar = False
25行目:      
26行目:      ' ステータスバーの表示状態を元に戻す。
27行目:      Application.DisplayStatusBar = statusBarVisible
28行目:  
29行目:  End Sub


 ここで使用したString関数を紹介します。
String関数
構文: String( [繰返し回数], [文字コード(※または文字)] )
 文字を指定した文字数だけ並べた文字列を返します。


 ステータスバーに設定できる文字列の長さは255文字までです。
ページの先頭へ