【问题标题】:Create progress bar based on interval timer基于间隔定时器创建进度条
【发布时间】:2022-12-03 05:48:54
【问题描述】:

我有一些简单的代码,可以根据用户输入单元格的值每 xxx 秒运行一个宏。例如,如果用户输入“30”,它将每 30 秒运行一次宏。这是代码:

Public interval As Double 
Sub Start_Import() 
    Set sht = ThisWorkbook.Sheets("Timing") 
    'Tells where to find the interval value 
    interval = Now + TimeValue(sht.Range("X6").Text)

    'Tells Excel when to next run the macro. 
    Application.OnTime interval, "RunMacro"

End Sub

所有这些都可以正常工作。我想添加一些看起来像进度条或一系列“.....”或将根据计时器间隔进行的圆圈。例如,如果间隔为 30,则条形图从左到右移动需要 30 秒。我发现的一切都与任务运行所需的时间有关,我认为这是不一样的。我尝试采用一些任务计时器,但无法使它们工作。

任何想法或建议都会很棒。提前谢谢了。

【问题讨论】:

  • 您需要每秒运行一次 ontime(或其他比 30 更短的时间间隔)以触发对进度条的任何更新...

标签: excel vba timer progress-bar


【解决方案1】:

我为状态栏创建了这个简单的加载栏。我确定您可以毫无问题地将其适应您的代码。

Sub StatusbarPercent()

    Dim I As Long
    Dim N As Long
    Dim TotalSeconds As Long
    Dim Filler As String
    Dim spaces As String
    
    TotalSeconds = 15
    
    For I = 1 To 100
        spaces = spaces & " "
    Next I
    
    For I = 1 To TotalSeconds
        Filler = ""
        For N = 1 To CInt(I / TotalSeconds * 100)
        Filler = Filler & "|"
        Next N
        Application.StatusBar = "Working : <" & Left(Filler & spaces, 100) & "> " & CInt(I / TotalSeconds * 100) & "%"
        Application.Wait Now() + TimeValue("00:00:01")
    Next I
    
End Sub

【讨论】:

  • 我会剥离 application.wait,并在导入期间让它更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多