Pasek postępu VBA

Pasek postępu programu Excel VBA w programie Excel

Pasek postępu to coś, co pokazuje nam, ile procesu zostało zrobione lub zakończone, gdy uruchamiamy duże zestawy kodów, które wymagają więcej czasu na wykonanie, używamy paska postępu w VBA, aby pokazać użytkownikowi o stanie procesu, lub jeśli jeśli w jednym kodzie działa wiele procesów, używamy paska postępu, aby pokazać, który proces się rozwinął.

Pasek postępu pokazuje procent ukończonych zadań, gdy rzeczywiste zadanie działa za ekranem wraz z zestawem instrukcji podanych przez kod.

Gdy wykonanie kodu VBA zajmuje dużo czasu, użytkownik ma obawy, aby wiedzieć, jak szybko może się zakończyć. Domyślnie na wykonanie zadania musimy poczekać cały czas, ale wstawiając pasek postępu poznajemy postęp kodu VBA.

W prawie każdym programie komputerowym widzimy pasek postępu, który pokazuje postęp zadania, które wykonujemy, tak jak na poniższym obrazku.

W Excelu możemy stworzyć pasek postępu za pomocą kodowania VBA. Jeśli kiedykolwiek zastanawiałeś się, jak możemy stworzyć pasek postępu, to jest to artykuł stworzony dla Ciebie.

Możesz pobrać ten szablon paska postępu VBA tutaj - szablon paska postępu VBA

Stwórz swój własny pasek postępu

Aby utworzyć pasek postępu, musimy wykonać kilka kroków. Poniżej znajdują się kroki, które należy wykonać podczas tworzenia wykresu słupkowego postępu.

Krok 1: Utwórz lub wstaw nowy formularz użytkownika.

Po kliknięciu powyższej opcji zobaczysz formularz użytkownika podobny do poniższego.

Krok 2: Naciśnij klawisz F4 , aby wyświetlić okno właściwości VBA.

W tej zakładce właściwości musimy zmienić właściwości wstawionego przez nas formularza użytkownika VBA.

Krok 3: Zmień nazwę formularza użytkownika na UFProgressBar.

Teraz możemy odnieść się do tego formularza użytkownika z nazwą „UFProgressBar” podczas kodowania.

Krok 4: Zmień właściwość Pokaż model formularza użytkownika na FALSE.

Krok 5: Teraz dostosuj wyrównanie użytkownika z do swoich potrzeb. Zmieniłem wysokość formularza użytkownika na 120 i szerokość na 300.

Krok 6: Zmień podpis formularza użytkownika na „Pasek stanu postępu”.

Krok 7: Teraz z przybornika formularza użytkownika wstaw LABEL do formularza użytkownika u góry.

W przypadku tej etykiety musimy ustawić właściwości etykiety. Usuń podpis i wyczyść go, a następnie dostosuj szerokość etykiety.

Krok 8: Zmień nazwę etykiety na „ProgessLabel”.

Krok 9: Teraz z przybornika weź ramkę i narysuj tuż pod etykietą, którą wstawiliśmy w poprzednich krokach. Upewnij się, że ramka znajduje się w środku formularza użytkownika.

Krok 10: Teraz musimy zmienić niektóre właściwości ramki, aby wyglądała dokładnie tak samo, jak wstawiony przez nas formularz użytkownika.

Właściwość 1: Zmień nazwę ramki na „ProgressFrame”.

Właściwość 2: Usuń podpis i pozostaw go pustym.

Właściwość 3: Zmień efekt specjalny ramki na 6 - fmSpecialEffectBump.

Po tych wszystkich zmianach nasz formularz użytkownika powinien wyglądać tak.

Krok 11: Teraz wstaw jeszcze jedną etykietę. Tym razem umieść etykietę tuż wewnątrz wstawionej przez nas ramki.

Podczas wkładania etykiety upewnij się, że lewa strona etykiety dokładnie pasuje do ramki, którą wstawiliśmy, jak pokazano na powyższym obrazku.

Krok 12: Po wstawieniu etykiety zmień właściwości etykiety w następujący sposób.

Właściwość 1: Zmień nazwę etykiety na „MainProgressLabel”.

Właściwość 2: Usuń podpis.

Właściwość 3: Zmień kolor tła zgodnie z życzeniem.

Ok, teraz skończyliśmy proces ustawiania paska postępu i w tym momencie wygląda to tak.

Teraz musimy wprowadzić kody, aby działało to idealnie.

Krok 13: Aby utworzyć strukturę, dodaj poniższe makro w programie Excel.

Kod:

 Sub InitUFProgressBar () With UFProgressBar .Bar.Width = 0 .Text.Caption = "0%" .Show vbModeless End With 

Uwaga: „UFProgressBar” to nazwa nadana formularzowi użytkownika, a „pasek” to nazwa nadana ramce, którą utworzyliśmy, a „tekst” to nazwa nadana etykiecie wewnątrz ramki.

Teraz, jeśli uruchomisz ten kod ręcznie lub za pomocą klawisza F5, powinniśmy zobaczyć pasek postępu w ten sposób.

Step 14: Now we need to create a macro to perform our task. I am performing the task of inserting serial numbers from 1 to 5000. Along with this code, we need to configure the progress bar chart as well, below code is the tailor-made code for you.

Code:

 Sub ProgressBar_Chart() Dim i As Long Dim CurrentUFProgressBar As Double Dim UFProgressBarPercentage As Double Dim BarWidth As Long i = 1 Call InitUFProgressBarBar Do While i <= 5500 Cells(i, 1).Value = i CurrentUFProgressBar = i / 2500 BarWidth = UFProgressBar.Border.Width * CurrentUFProgressBar UFProgressBarPercentage = Round(CurrentUFProgressBar * 100, 0) UFProgressBar.Bar.Width = BarWidth UFProgressBar.Text.Caption = UFProgressBarPercentage & "% Complete" DoEvents i = i + 1 Loop Unload UFProgressBar End Sub