教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】ラベルに表示する文字列を設定する方法②(進捗状況表示)について教えて!

f:id:m_kbou:20210816095717p:plain

コマンドボタンをクリックすると、ラベルに表示する文字列を進行状況表示(パーセント表示)する方法について紹介します。

 

 

内容

[サンプルフォーム]: 

今回は以下のサンプルフォームを使用して説明します。
・フォーム名の付け方はこちらを参考にして下さい。
・ラベル名の付け方はこちらを参考にして下さい。
・コマンドボタン名の付け方はこちらを参考にして下さい。
・コマンドボタンへの表示文字の付け方はこちらを参考にして下さい。

f:id:m_kbou:20210816095733p:plain

[実行内容]: 

上記のサンプルフォーム内にある<実行>ボタンをクリックすると、ラベル名:進捗状況に進捗がパーセントで表示されます。

 

ラベルに表示する文字列を進行状況表示(パーセント表示)する方法

(1)VBE(VBA記述画面)を開き、予め作成したテストフォームがある事を確認します。(※VBEの開き方についてはこちらを参考にして下さい。)

f:id:m_kbou:20210816095749p:plain

(2)フォームにある<実行>ボタン上で右クリックします。小窓が開くので「コードの表示」を選択します。

f:id:m_kbou:20210816095803p:plain

(3)「実行_Click」イベントプロシージャが表示されます。(※これは自動的に作成される仕組みとなっている様です。)

f:id:m_kbou:20210816095817p:plain

(4)実行する処理内容を記述します。今回はボタンがクリックされた場合に、ラベル名:進捗状況に進捗パーセントを表示する内容を記述します。

Private Sub 実行_Click()

  Dim 進捗 As Long
  Dim 待ち時間 As Variant

  '↓処理①
  進捗状況.Caption = "0%"

  '↓処理②
  For 進捗 = 1 To 100

    '↓処理③
    待ち時間 = Now + TimeValue("0:00:01")
    Application.Wait 待ち時間

    '↓処理④
    進捗状況.Caption = 進捗 & "%"
    DoEvents

  Next

  '↓処理⑤
  MsgBox "処理が終了しました。"

End Sub

処理の流れは以下の通りとなります。

[処理①]:ラベルへの初期値セット
ラベル名:進捗状況に初期値として「0%」をセットします。

[処理②]:For~Next文によるループ処理
For~Next文を使用して変数:進捗に1~100の値をセットしながらループさせます。ループ中は以下の[処理③]及び[処理④]を実行します。

[処理③]:待ち時間を設ける
TimeValue関数を使い文字列時刻を時刻データに変換します。今回は文字列:"0:00:01"を「1秒」に変換します。変数:待ち時間に「現在の時刻(Now)+変換時間:1秒」をセットします。最後にApplication.Waitにて変数:待ち時間になるまで処理を停止させます。

[処理④]:ラベルへの進捗状況をセット
ラベル名:進捗状況に変数:進捗と”%”を合わせてセットします。
※変数:進捗に1がセットされた場合は「1%」を、90がセットされた場合は「90%」をセットします。また、DoEventsでOSへ制御を移す事で、ラベル名:進捗状況に進捗パーセントが表示されます。

[処理⑤]:終了メッセージ
For~Next文のループ処理が終了した場合、MsgBoxで「処理が終了しました。」を表示させます。

f:id:m_kbou:20210816112802p:plain

(5)上部にある実行ボタン(▶)をクリックします。

f:id:m_kbou:20210816112817p:plain

(6)テストフォームが表示されます。

f:id:m_kbou:20210816095952p:plain

(7)<実行>ボタンをクリックします。

f:id:m_kbou:20210816095922p:plain

(8)ラベル名:進捗状況にパーセントが表示されます。(※<実行>ボタンに設定した上記(4)イベントプロシージャが実行された事が分かります。)

f:id:m_kbou:20210816100005p:plain

 (9)進捗パーセントが100%になると、MsgBoxで「処理が終了しました。」が表示されます。

f:id:m_kbou:20210816100040p:plain

ラベルに表示する文字列を進行状況表示(パーセント表示)する方法についての説明は以上です。

 

サンプル

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

 

おわりに

今回はラベルに表示する文字列を設定する方法②(進捗状況表示)について説明しました。類似の内容にラベルの長さを設定する方法②(進行状況表示)もあります。こちらも参考にして下さい。