検索

キーワード


目次

【Excel VBA】処理の実行状況をステータスバーに表示する方法

  • 公開日:2022-02-20 22:19:02
  • 最終更新日:2022-02-20 22:25:23

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

こんにちは。IMMRです。


ExcelのVBAって便利です。

今まで手作業で行ってきたものもパッと出来ますし、処理も数秒で完了することができます。

しかし、処理の内容あるいはデータ数によっては、作業時間が30分以上、1時間以上とかかってしまうものもあります。


例えば、プログラムが下記のようになっているとします。


図1 プログラム

図1 プログラム

プログラムのロジックではそれぞれ他のプロシージャーをCallして、実行しています。

※Callしているプロシージャーでどのような処理を行っているかは、省略します。


そして、実行すると下記のように青い円が表示されます。


図2 処理実行中

図2 処理実行中


これだと、本当に実行しているの? 後、どれくらいで終わるの? と疑問が出てきます。

作業状況を伝える必要があるのです。


1.処理の実行状況をステータスバーに表示する方法(はじめに)

ツールを実行したら作業状況を伝える必要があります。

そうすれば、きちんと実行していることや後どれくらいで処理が終了するのかをツール実行者に伝えることが出来ます。

伝える方法としては、いくつかありますが、ここではステータスバーに表示する方法を説明します。


2.処理の実行状況をステータスバーに表示する方法(ステータスバー)

ステータスバーとは、下記の場所のことをいいます。


図3 ステータスバー

図3 ステータスバー

赤枠で囲ってある場所がステータスバーです。

今は「準備完了」と表示されていますが、この欄を使用してメッセージを表示していきます。


3.処理の実行状況をステータスバーに表示する方法(表示方法)

ではステータスバーにメッセージを表示をしていきます。


ステータスバーにメッセージを表示

Application.StatusBar = "処理実施中"


※ダブルコーテーションに挟まれた文字が表示されます。

実行するとこんな感じになります。


図4 ステータスバーに表示

図4 ステータスバーに表示


きちんと「処理実施中」という言葉が表示されています。

もちろん、Application.StatusBar = *** を数回使用すれば、メッセージを上書きすることも出来ます。


4.処理の実行状況をステータスバーに表示する方法(サンプルコード)

では、作業工程などが見えるようにするためにステータスバーに実行状況を表示していきます。

もちろん、どのようにメッセージを表示させるかは人それぞれです。

ここでは処理状況を表示させるためのサンプルを2種類説明します。


サンプル1

データ件数に対しての表示方法

120件のデータの場合、1レコードづつ処理を行っていきますが、

1レコード完了するたびにメッセージを表示するといったものです。


サンプルコード1

Sub TEST40_1()

Dim i As Long

For i = 1 To 120
    Application.StatusBar = i & "/" & 120 & "件 終了"
Next

End Sub


※サンプルコード1では、Forステートメントの中に記載しています。

 これにより、総件数(120件)のうちどれだけ、処理が何件、完了したかを確認することが出来ます。


サンプル2

処理回数に対しての表示方法

処理の個数に対して、何個目の処理が終了したかを表示するものです。

1つの処理が完了するごとにメッセージを表示するといったものです。


サンプルコード2

Sub TEST40_2()

Call Process1
Application.StatusBar = "1/5 終了"
Call Process2
Application.StatusBar = "2/5 終了"
Call Process3
Application.StatusBar = "3/5 終了"
Call Process4
Application.StatusBar = "4/5 終了"
Call Process5
Application.StatusBar = "5/5 終了"

End Sub

サンプルコード2では、プロシージャーをCallしている行の下に記載しています。

これにより、行う処理の回数のうちどれだけ、処理が完了したかを確認することが出来ます。


5.処理の実行状況をステータスバーに表示する方法(サンプルコードの実行)

上記で紹介した2つのサンプルコードを実際に実行して、

処理の実行状況をステータスバーに表示されることを確認します。



まずは、サンプルコード1を実行します。 


図5 サンプルコード1_処理前

図5 サンプルコード1_処理前


それでは、処理を実行します。


図6 サンプルコード1_処理実行1

図6 サンプルコード1_処理実行1

この時点でのメッセージは「1/120」と表示されています。

 そのため、全部で120件のデータであることがわかります。



図7 サンプルコード1_処理実行2

図7 サンプルコード1_処理実行2


※この時点でのメッセージは「60/120」と表示されています。

 半分の処理が完了したことがわかります。


図8 サンプルコード1_処理実行3

図8 サンプルコード1_処理実行3


※この時点でのメッセージは「110/120」と表示されています。

 処理もあと少しで完了することがわかります。



図9 サンプルコード1_処理実行4

図8 図9 サンプルコード1_処理実行4


※この時点でのメッセージは「120/120」と表示されています。

 全てのデータに対する処理が完了したことがわかります。



次にサンプルコードの2を実行します。


図10 サンプルコード2_処理前

図10 サンプルコード2_処理前


それでは、処理を実行します。


図11 サンプルコード2_処理実行1

図11 サンプルコード2_処理実行1

この時点でのメッセージは「1/5終了」と表示されています。

 5種類の処理があり、その一つ目が終了したことがわかります。

図12 サンプルコード2_処理実行2

図12 サンプルコード2_処理実行2

この時点でのメッセージは「3/5終了」と表示されています。

 全体の半分以上の処理が終了したことがわかります。

図13 サンプルコード2_処理実行3

図13 サンプルコード2_処理実行3

この時点でのメッセージは「5/5終了」と表示されています。

 予定していた処理が完了したことがわかります。


サンプルプログラム1、2より、ステータスバーにメッセージを表示することが出来ました。


【著者】

Imamura

「挑戦心」を忘れずに、新しいことにチャレンジしています。 資格:VBAエキスパート Excel VBA(ベーシック/スタンダード) 等

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事