【问题标题】:How can I display a progress bar for a built-in Excel function?如何显示内置 Excel 函数的进度条?
【发布时间】:2015-02-24 08:27:39
【问题描述】:

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

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

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

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

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

非常感谢任何帮助。

【问题讨论】:

  • 只需弹出一个非模态表单,其中包含“请稍候,正在准备数据”类型的消息。如果只是几秒钟应该可以正常工作。我很确定没有办法做你正在寻找的东西。
  • 您的意思是超出状态栏中标准的“正在计算:xx%”消息?
  • 我认为可能是这样。谢谢 Tim 和 ckuhn ,我想等待的消息和它会得到的一样好。

标签: vba excel progress-bar


【解决方案1】:

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

例子:

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

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

希望这会有所帮助!

【讨论】:

  • 虽然我很欣赏这个建议,但这又与我之前的策略有同样的陷阱。由于我想使用内置的排序功能,所以没有可以将Application.StatusBar = "whatever" 部分放入的循环。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多