什么是最低限度的VBA“我很忙”对话框?

时间:2011-05-09 20:05:41

标签: vba

我在PowerPoint 2010中有一个宏,它将音频文件链接到每张幻灯片。但是,这需要一些时间,虽然有一个状态栏“链接文件”的进度,我想要更多的东西在你的脸上。

警告:我真的不熟悉VBA或它的API。

我想要的是什么:

ImBusyDialog("Linking Files...").Open()

// Call Sub that does real work.

ImBusyDialog.Close();

就是这样。如果内置的东西像IE中的页面加载微调器一样,那么很好,如果没有,我很高兴有一个简单的消息框。重要的是它不需要用户干预。

1 个答案:

答案 0 :(得分:4)

使用与设置状态栏相同的逻辑。在设置状态栏文本的地方,您只需 添加相应的代码即可调用状态对话框。

O'Reilly对如何使用进度条和所有内容构建状态栏对话框进行了相当详细的描述。对于你想要的东西来说可能有点矫枉过正,但更多的是看看VBA中有什么可能:http://oreilly.com/pub/h/2607

Stackoverflow之前已经解决了这个问题,你可以轻松修改一个相对简单的框,以显示在任何给定时刻正在处理哪个文件:How do I create a status dialog box in Excel

上一篇文章中的重要代码:

Sub ShowForm_DoSomething()r
Load frmStatus
     frmStatus.Label1.Caption = "Starting"
     frmStatus.Show
     frmStatus.Repaint
'Load the form and set text
     frmStatus.Label1.Caption = "Doing something"
     frmStatus.Repaint
'code here to perform an action
      frmStatus.Label1.Caption = "Doing something else"
     frmStatus.Repaint
'code here to perform an action
      frmStatus.Label1.Caption = "Finished"
     frmStatus.Repaint
     Application.Wait (Now + TimeValue("0:00:01"))
     frmStatus.Hide
     Unload frmStatus 'hide and unload the form
End Sub

O'Reilly解决方案当然是一个参与的解决方案,但它似乎是“最漂亮的”,并且可能非常用户友好。 SO解决方案似乎更容易实现。