/ Индикатор за напредъка в Excel VBA

Индикатор за напредъка в Excel VBA

По - долу ще разгледаме програма в Excel VBA който създава a индикатор за напредъка, Ние сме запазили индикатора за напредъка колкото е възможно по-прост, но изглежда професионален. Готови ли сте?

Потребителската форма, която ще създадем, изглежда така:

Индикатор за напредъка в Excel VBA

За да създадете този Userform, изпълнете следните стъпки.

1. Отворете редактора на Visual Basic. Ако Explorer на проекта не е видим, щракнете върху Преглед, Проект Explorer.

2. Щракнете върху Вмъкване, Потребител. Ако Toolbox не се покаже автоматично, кликнете върху View, Toolbox. Вашият екран трябва да бъде настроен, както е описано по-долу.

Настройка на потребителския екран в Excel VBA

Тази потребителска форма се състои само от три контрола. Контрол на рамката и два контрола на етикета.

3. Добавете контрола на рамката. Можете да направите това, като кликнете върху Рамката от кутията с инструменти. След това можете да плъзнете рамков контрол върху Userform. Трябва да промените някои свойства на този контролен панел. Кликнете с десния бутон на мишката върху контрола на рамката, след което кликнете върху Properties Изчистете полето за надписи, задайте височина до 24 и ширина до 204.

4. Добавете първия контролен етикет и го поставете в контрола на рамката. Кликнете с десния бутон на мишката върху контрола на етикета и след това кликнете върху Properties Променете името на Bar, BackColor, за да маркирате, изпразнете полето Caption, задайте Height до 20 и Width to 10.

5. Добавете втория контролен етикет и го поставете над контрола на рамката. Кликнете с десния бутон на мишката върху контрола на етикета и след това кликнете върху Properties Променете името на текст и променете надписа на "0% завършен".

6. Променете надписа на Userform до Progress Indicator.

След като това бъде завършено, резултатът трябва да съответства на картината на потребителския формат, показан по-рано.

7. Поставете командния бутон във вашия работен лист и добавете следния код, за да покажете Userform:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Ако сте преминали през другия UserformПримери на този сайт знаете, че е време да създадете Sub UserForm_Initialize. Този Sub се изпълнява автоматично, когато се зареди Userform. По този начин, когато използвате метода Показване на Userform, кодът ще се изпълни автоматично. Вместо Sub UserForm_Initialize създаваме Sub UserForm_Activate. Използвайки този под, Excel VBA може да актуализира Userform, за да покаже напредъка на макроса.

8. Отворете редактора на Visual Basic.

9. В Project Explorer кликнете с десния бутон върху UserForm1 и след това върху View Code.

10. Изберете Userform от левия падащ списък. Изберете Активиране от десния падащ списък.

11. Добавете следния ред на кода:

Private Sub UserForm_Activate()

code

End Sub

Обяснение: това подразбиране извиква друг подмен код, който ще създадем след минута. Объркани ли сте? Можете да прегледате нашата функция и под-глава, за да научите повече за субсидиите. Ако бързате, просто изпълнете следните стъпки и ще бъдете добре.

12. Поставете подменувания код в модул (В редактора на Visual Basic щракнете върху Вмъкване, Модул). Това е само пример. Това е мястото, където да добавите свой собствен код, когато искате да използвате този индикатор за прогрес за собствения си макрос. Кодът изглежда по следния начин.

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

Обяснение: първо, инициализираме някои променливи. След това изчистваме листа1. Използваме двоен цикъл, за да покажем стойностите от 1 до 1000 в първите 100 реда на работния лист. Това ще запази работата на Excel VBA за известно време и ще ни даде възможност да видим напредъка на макроса. Променливата pctCompl (съкращение за percentCompleted) измерва напредъка на макроса. Накрая, наричаме друг подменък, наречен прогрес, и предаваме стойността на променливата pctCompl за актуализиране на Userform. По този начин можем да видим напредъка на макроса!

13. Добавете друг подменък, наречен напредък. Кодът изглежда така:

Sub progress(pctCompl As Single)

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

DoEvents

End Sub

Обяснение: първата кодова линия променя надписите на първия контролен етикет. Втората кодова линия променя ширината на втория контролен етикет. Добавете DoEvents, за да обновите Userform.

14. Излезте от редактора на Visual Basic и кликнете върху командния бутон на листа:

Резултат:

Резултати от индикатора за напредъка

Забележка: за този макрос ние използвахме променливата i за измерване на напредъка. Например, на ред 11, 10% е завършено. Това може да е различно за макроса ви. Техниката на предаване на стойността на променливата pctCompl на подпрограмата за актуализиране на Userform остава същата.

Също така се чете: