如何显示内置Excel功能的进度条?

时间:2014-05-27 16:36:48

标签: excel vba excel-vba progress-bar

我有一个Excel表,其中包含大约40,000个值,需要通过userform进行排序。为此,我用了......

myTable.Sort.SortFields.Add Range(strSortBy), xlSortOnValues, xlDescending, xlSortNormal
myTable.Sort.Apply

...其中myTable是表,strSortBy是我想要排序的列的标题。

现在,尽管Excel具有闪电般快速的排序功能,但是这些数据开始需要足够长的时间(几秒钟),我希望为用户提供某种进度反馈。我在Excel中创建了几个userform进度条,但由于Sort是一个内置 Excel函数,我看不到任何明显的方法来显示或确定完成的百分比。

这是一个失败的原因吗?或者有什么方法可以确定内置函数的进度吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我喜欢使用内置的状态栏功能来显示进度。它非常简单但功能强大。

示例:

Application.StatusBar = "Renaming Cells"

While count2 <= (count1)
    DoEvents
    Length = Len(Range("C" & CStr(count2)).Value)
    Newlength = Length - 2
    newID = Left(Range("C" & CStr(count2)).Value, Newlength)
    Range("C" & CStr(count2)).Value = newID
    count2 = count2 + 1
    newID = vbNullString
    Application.StatusBar = "Editing Cell: " & count2 & " of " & count1 & "."
Wend

在这个例子中,我能够遍历单元格,缩短每个单元格的长度。这样做时,我会显示程序所在的单元格,因为它可能需要很长时间。

希望这有帮助!