PR

【VBA】Excelのステータスバーに文字を表示する!

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、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

タイトルとURLをコピーしました