| excel中的状态栏可用作代码监视器。当您的VBA代码很长并且您使用VBA执行多项任务时,通常会禁用屏幕更新,以免看到屏幕闪烁。但是由于这个原因,您不知道代码中正在发生什么。

如果您不知道excel中的状态栏在哪里,则为:

unnamed

您可以使用Excel的状态栏从Excel获取信息,而不会干扰代码的执行。您可以在状态栏上显示Marco的阶段,也可以将其用作进度栏。

VBA代码在Excel状态栏上显示消息

Application.StatusBar = "Message"

StatusBar是Application对象的一个​​属性,该属性将文本作为输入。

在这个例子中,我只是显示哪个函数正在运行…​

Sub DisplayMessageOnStatusBar()

Application.ScreenUpdating = False

Application.StatusBar = "Calling function one "

' call function_1

Application.Wait (Now + TimeValue("00:00:2"))

Application.StatusBar = "Calling function two"

'Call function_2

Application.Wait (Now + TimeValue("00:00:2"))

Application.StatusBar = "Calling function Three"

'Call function_3

Application.Wait (Now + TimeValue("00:00:2"))

Application.StatusBar = ""

Application.ScreenUpdating = True

End Sub

在此示例中,屏幕更新开始时设置为False。

现在,在调用function_1之前,我正在显示一条消息,该消息正在调用函数1。

Application.Wait(Now + TimeValue(“ 00:00:2”))这行代码只是伪造一个冗长的函数调用,因此我有2秒的时间在状态栏上看到它。

pasted image 0

我在所有函数调用之前完成了此操作,最后,我将状态栏设置为空白(“”)。

状态栏消息对于使用冗长的代码显示消息非常有用。当您的代码经过多个阶段或长时间运行时,可以在状态栏上显示该代码,以便用户知道代码正在运行。否则,用户可能会认为系统已挂起。

现在,您可以使用此单行代码使用Excel 2016、2013、2010和2007的VBA在状态栏上智能地获取信息。

旧帖子

某些vba宏/代码需要很长时间才能运行或执行所需的操作。如果您在代码开头使用Application.ScreenUpdating = False行关闭了屏幕更新,那么如果任何用户运行该代码,他们将不知道发生了什么并认为计算机系统没有响应。您可以要求代码在状态栏上显示状态消息,以便通知用户代码的当前状态。

|这是一个简单的代码,它提供一个消息框,显示从第2行到最后一行的A列中的值。状态栏在代码运行时将显示消息“ Macro running”(宏运行),一旦完成,它将显示“就绪”,这是默认的Excel消息之一。

Option Explicit

Sub macro1()

Dim i As Long, lrow As Long

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Application.DisplayStatusBar = True

With Worksheets(“Sheet1”)

lrow = .Range(“A” & .Rows.Count).End(xlUp).Row

For i = 2 to lrow

Application.StatusBar = “Macro running”

Msgbox .Range(“A” &i).Value

Next i

End With

Application.StatusBar = “”

Application.ScreenUpdating = True

Application.DisplayAlerts = True

End Sub

要将上面的代码复制到文件中,请执行以下操作:*按键盘上的Alt + F11。

  • 在左侧,您将看到Microsoft Excel对象。

  • 右键单击并选择插入。

  • 然后单击模块。

  • 将代码复制到右侧的代码窗口。

您可以在下面的模块中看到发布的代码-

img1

现在让我们了解代码的每一行是什么-因此,我们首先将DISPLAYSTATUSBAR设置为true,然后将状态栏设置为消息。一旦在代码末尾使用_Application.StatusBar =“” _,它将恢复为默认的Excel消息为READY。

这是宏运行时状态栏的图片。

img2

宏完成后,状态栏将显示如下–

img3

因此,类似地,您可以在代码的不同部分更新状态栏,以便用户知道宏运行时正在发生的情况。

有时,可能有一个或多个宏覆盖多个进程,并且此状态栏对于了解宏到达哪个进程很有用。

如果您喜欢我们的博客,请在Facebook上与您的朋友分享。您也可以在Twitter和Facebook上关注我们。

我们很高兴收到您的来信,请让我们知道我们如何改进,补充或创新我们的工作,并为您做得更好。写信给我们[email protected]

热门文章:

link:/ formulas-and-functions-vlookup-function简介[如何在Excel中使用VLOOKUP函数]