/ Excel VBAの進捗インジケータ

Excel VBAにおける進捗インジケータ

以下では、 Excel VBA それは 進捗インジケータ。私たちは進捗インジケータをできるだけシンプルに保ちましたが、プロフェッショナルに見えます。あなたは準備ができましたか?

作成するUserformは次のようになります。

Excel VBAにおける進捗インジケータ

このユーザーフォームを作成するには、次の手順を実行します。

1. Visual Basic Editorを開きます。プロジェクトエクスプローラが表示されていない場合は、[表示]、[プロジェクトエクスプローラ]をクリックします。

2. Insert、Userformをクリックします。ツールボックスが自動的に表示されない場合は、[表示]、[ツールボックス]の順にクリックします。あなたの画面は以下のように設定する必要があります。

Excel VBAでのユーザーフォームの画面設定

このユーザーフォームは、3つのコントロールで構成されています。フレームコントロールと2つのラベルコントロール。

3.フレームコントロールを追加します。 これを行うには、ツールボックスからフレームをクリックします。次に、Userformでフレームコントロールをドラッグすることができます。このフレームコントロールのいくつかのプロパティを変更する必要があります。フレームコントロールを右クリックし、[プロパティ]をクリックします。 Captionフィールドを空にし、高さを24に、幅を204に設定します。

4。 最初のラベルコントロールを追加し、フレームコントロールに配置します。ラベルコントロールを右クリックし、[プロパティ]をクリックします。名前をBar、BackColorをHighlightに変更し、Captionフィールドを空にし、Heightを20に、Widthを10に設定します。

5。 2番目のラベルコントロールを追加し、フレームコントロールの上に配置します。ラベルコントロールを右クリックし、[プロパティ]をクリックします。名前をTextに変更し、キャプションを「0%Completed」に変更します。

6.ユーザーフォームのキャプションを進捗インジケーターに変更します。

これが完了したら、その結果は前に示したUserformの画像と一致するはずです。

7.ワークシートにコマンドボタンを配置し、次のコード行を追加してユーザーフォームを表示します。

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

あなたが他のUserformこのサイトの例では、これがSub UserForm_Initializeを作成するときであることがわかります。このSubは、Userformがロードされるたびに自動的に実行されます。したがって、ユーザーフォームにShowメソッドを使用すると、コードが自動的に実行されます。 Sub UserForm_Initializeの代わりに、Sub UserForm_Activateを作成します。このサブを使用すると、Excel VBAはユーザーフォームを更新してマクロの進行状況を表示できます。

8. Visual Basic Editorを開きます。

9.プロジェクトエクスプローラで、UserForm1を右クリックし、[コードの表示]をクリックします。

10.左のドロップダウンリストから「ユーザーフォーム」を選択します。右のドロップダウンリストから「有効化」を選択します。

11.次のコード行を追加します。

Private Sub UserForm_Activate()

code

End Sub

説明: このサブは、私たちが1分で作成しようとしている別のサブ名付きコードを呼び出します。混乱している?あなたはSubについて詳しく知るために、FunctionとSubの章を読むことができます。あなたが急いでいる場合は、次の手順を実行するだけで大​​丈夫です。

12。 サブ名前付きコードをモジュールに配置します(Visual Basic EditorでInsert、Moduleをクリックします)。これは単なる例です。これは、あなた自身のマクロのためにこの進捗インジケータを使用したいときあなた自身のコードを追加する場所です。コードは次のようになります。

Sub code()

Dim i As Integer, j As Integer, pctCompl As Single

Sheet1.Cells.Clear

For i = 1 To 100
    For j = 1 To 1000
        Cells(i, 1).Value = j
    Next j
    pctCompl = i
    progress pctCompl
Next i

End Sub

説明:まず、いくつかの変数を初期化します。 次に、sheet1をクリアします。ワークシートの最初の100行に1〜1000の値を表示するには、ダブル・ループを使用します。これにより、Excel VBAはしばらくビジー状態に保たれ、マクロの進捗状況を確認することができます。変数pctCompl(percentCompletedの省略形)は、マクロの進行状況を測定します。最後に、progressという名前の別のサブクラスを呼び出し、変数pctComplの値を渡してUserformを更新します。このようにして、マクロの進行状況を確認できます。

13. progressという名前の別のサブを追加します。コードは次のようになります。

Sub progress(pctCompl As Single)

UserForm1.Text.Caption = pctCompl & "% Completed"
UserForm1.Bar.Width = pctCompl * 2

DoEvents

End Sub

説明:最初のコード行は、最初のラベルコントロールのキャプションを変更します。 2番目のコード行は、2番目のラベルコントロールの幅を変更します。 DoEventsを追加してユーザーフォームを更新します。

14. Visual Basic Editorを終了し、シート上のコマンドボタンをクリックします。

結果:

進捗インジケータの結果

注意: このマクロでは、変数iを使用して進行状況を測定しました。たとえば、行11では10%が完了します。これはあなたのマクロによって異なる場合があります。変数pctComplの値をサブ進捗に渡してユーザーフォームを更新する方法は同じです。

また読む: