こんにちは、Ryoです。
VBAで処理する際に時間がかかる場合がありますが、進行状況などを表示しないとユーザー側で「あれ?フリーズか?」と誤解を招くことがあります。
そんな時に手軽に処理中であることを表示できる方法としてステータスバーに文字を表示する方法がありますので、紹介したいと思います。
1.サンプル実行画面
先ずは実行前、実行後を見てもらえればイメージしやすいと思います。
<実行前>
実行前なので当然何もありませんが、このステータスバーに「・・・Please Wait!・・・」と表示させます。
<実行後>
この通り表示されてますね。
処理の進捗状況はプログレスバーを使う方法もあるのですが、ステータスバーに表示するだけであれば数行で完了しますので、お手軽ですから処理内容によっては有効ですよ。
プログレスバーについてはこちらの記事「VBAでGoogle APIを使ったQRコード作成」内で
紹介していますので、ご興味あればぜひ!
では次にサンプルコードを紹介します。
2.サンプルコード
ステータスバーに文字列を表示したい場合は、
Application.StatusBar = “表示したい文字”
このように記述します。
処理完了後、元に戻すには、
Application.StatusBar = False
これでOKです。
Sub status_sample() 'ステータスバーに文字列表示 Application.StatusBar = "・・・Please Wait!・・・" 'サンプルとしてメッセージボックスの表示 MsgBox "ステータスバー文字表示サンプル実行中!" 'ステータスバーを元に戻す Application.StatusBar = False End Sub
この記述だけで文字列表示してくれます。
上のコードでも普通に動作しますが、Applicationオブジェクトに対して処理を実行するので、
複数回同じ記述をすることになりますから、「With」を使うとスッキリ書けます。
Sub status_sample2() With Application 'ステータスバーに文字列表示 .StatusBar = "・・・Please Wait!・・・" 'サンプルとしてメッセージボックスの表示 MsgBox "ステータスバー文字表示サンプル実行中!" 'ステータスバーを元に戻す .StatusBar = False End With End Sub
どちらでも実行結果は同じですが、「With」を使うと記述も楽ですから良いと思います。
サンプル中でメッセージボックスを表示させているのは、OKを押さない限り表示し続けるので例えるには好都合だからですね。
本来はこの部分に時間を要する処理が記述され、その間ステータスバーに表示しておくという使い方になるかと思います。
以上がステータスバーに文字列を表示する方法になります。
数行で状態を表示できますから、知っておくと何かと役に立つ場面が多いですよ。
今回の記事が何かの参考になれば幸いです。
Ryo