Excel vba进度条不工作:无效的属性值

我想从Excel VBA教程下面的代码,但它失败:ProgressBat不更新,再加上UserForm1.ProgressBar1.Value = UserForm1.ProgressBar1.Value + 1行得到highlited错误“运行时错误380.无效的属性值”。

 Sub ShowProgressBar() Dim lAllCnt As Long Dim rc As Range lAllCnt = Selection.Count UserForm1.Show UserForm1.ProgressBar1.Min = 1 UserForm1.ProgressBar1.Max = lAllCnt For Each rc In Selection UserForm1.ProgressBar1.Value = UserForm1.ProgressBar1.Value + 1 Next Unload UserForm1 End Sub 

什么可能是错的?

那是因为你超过了最大值。 尝试这个

 For Each rc In Selection If UserForm1.ProgressBar1.Value < UserForm1.ProgressBar1.Max Then UserForm1.ProgressBar1.Value = UserForm1.ProgressBar1.Value + 1 End If Next 

顺便说一句,我想你忘了在UserForm1.Show后提及vbModeless

说明

当您设置进度条的最小值或最大值时,则不能为其分配不落入范围的值。 例如,如果最小值= 1,最大值= 5,那么当您分配一个小于1且大于5的值时,将会出现错误。

这是testing的代码

 Sub ShowProgressBar() Dim lAllCnt As Long Dim rc As Range lAllCnt = Selection.Count With UserForm1 .Show vbModeless With .ProgressBar1 .Min = 1 .Max = lAllCnt For Each rc In Selection If .Value < .Max Then .Value = .Value + 1 End If Next End With End With '~~> I have uncommented it so that you can see the '~~> Userform with the progress bar with it's values 'Unload UserForm1 End Sub 

如前所述,您应该尝试查看最小值和最大值。 我已经做了一个单独的function。 通常,在迭代之间等待可能是一个好主意,可以看到进度条的更新。

 Option Explicit Sub ShowProgressBar() Dim lAllCnt As Long Dim rc As Range lAllCnt = Selection.Count UserForm1.Show vbModeless UserForm1.ProgressBar1.Min = 1 UserForm1.ProgressBar1.Max = lAllCnt For Each rc In Selection UserForm1.ProgressBar1.Value = fnBigOrSmallIncrement(UserForm1.ProgressBar1.Value, 1, lAllCnt) Application.Wait Now + #12:00:01 AM# Next Unload UserForm1 End Sub Public Function fnBigOrSmallIncrement(lngCurrent As Long, lngMin As Long, lngMax As Long) As Long fnBigOrSmallIncrement = lngCurrent + 1 If fnBigOrSmallIncrement < lngMin Then fnBigOrSmallIncrement = lngMin If fnBigOrSmallIncrement > lngMax Then fnBigOrSmallIncrement = lngMax End Function 

一般来说,如果您熟悉面向对象编程并想更好地编写代码,请尝试将整个表单重新编译为一个类。

我不知道你的进度窗体的外观以及你使用的是什么types的代码(也许粘贴一个链接?),但是当我使用进度条时,我只改变了用户表单栏的宽度属性而不是它的值,例如像这里http://www.excel-easy.com/vba/examples/progress-indicator.html