VBA Microsoft Excel 中的进度条2025年2月28日 | 阅读 20 分钟 众所周知,在 Microsoft Excel 中,VBA 的相应进度条是一个可视化工具,用于在执行耗时任务(如有效处理数据、生成报告或执行大量计算)时向用户提供实时反馈。如果没有此类功能,用户常常会不确定任务需要多长时间,或者 Microsoft Excel 是否已冻结。进度条通常通过提供一种简单的方法来显示任务已完成多少以及还剩多少来解决此问题。它充当一个指示器,让用户保持知情和参与,从而有效防止等待过程中的沮丧。 通常,相应的进度条可以有多种形式,但在 Microsoft Excel VBA 中,它通常通过用户窗体 (UserForm) 来实现。该窗体会显示一个矩形条,随着任务的进行而填充。在后台,VBA 代码会运行一个循环或高效地执行一系列任务,并定期更新进度条以提供视觉反馈。这不仅使任务看起来更具交互性,而且通过提供任务完成前的剩余时间感,有助于管理用户期望。要实现进度条,需要各种基本的 VBA 技能。我们需要创建一个用户窗体,插入一个标签或框架控件作为进度条,并编写代码来在任务前进时更新进度条。完成百分比可以通过将当前迭代或步数除以总步数并乘以100来有效计算。然后使用此百分比来有效调整进度条的宽度。 在本教程中,我们将学习 Microsoft Excel 中的 VBA 进度条及其优点,并通过示例进行演示,以便更好地理解概念。 Microsoft Excel 中的 Visual Basic for Applications (VBA) 是什么意思?众所周知,“Microsoft Excel 中的 Visual Basic for Applications (VBA) 主要用于为 Windows 操作系统编写程序。它在 Microsoft Office (MS Office, Office) 应用程序(包括 Access、Excel、PowerPoint 和 Publisher 等应用程序)中作为内部编程语言运行。” 相应的 VBA 通常被认为是 Microsoft Corporation (MSFT) 的传统软件 Visual Basic 的一部分。它还允许用户轻松地自定义超出 MS Office 主机应用程序通常提供的功能。 VBA 是一种事件驱动的工具。我们可以轻松地通过将命令输入编辑模块来告诉计算机执行操作或一系列操作,从而有效地构建自定义宏指令(宏)。通常,VBA 不是一个独立的程序。它通常还允许用户有效地操作各种图形用户界面 (GUI) 功能,如工具栏、菜单、对话框和窗体。我们还可以使用 VBA 来高效地创建用户定义函数 (UDF),访问 Windows 应用程序编程接口 (API),以及自动化特定的计算机进程和计算。 Excel VBA 进度条是什么意思?“Microsoft Excel 中的 Excel VBA 进度条被定义为一种图形用户界面元素,可在 Excel 工作簿中执行的任务进度时提供视觉反馈。当我们运行耗时的 VBA 宏或需要一些时间才能完成的进程(如导入数据、计算或数据分析)时,通过使用进度条,可以提高用户体验,向用户表明正在进行某些操作,并指示任务的进展程度。” 现在让我们考虑以下示例 ![]() 这个例子通常演示了如何在不使用用户窗体的情况下有效实现 VBA 进度条,而是使用Application.StatusBar 来显示进度。 该程序通常计算 100 步的进度,这些进度以百分比格式显示在状态栏中。应用程序会等待 1 秒钟。所有步骤完成后,会弹出一个消息框,告知用户所有进度都已成功完成。输出如下图所示 ![]() ![]() 优点众所周知,在 Microsoft Excel 中的 VBA(Visual Basic for Applications)中使用进度条可以在运行长时间任务或复杂操作时极大地改善用户体验。进度条主要为用户提供任务已完成多少以及还剩多少的清晰指示,从而帮助我们管理期望并有效通知用户。以下是 VBA for Excel 中加入进度条的五个关键有效优势,用简单的术语解释
通常,我们都知道将进度条添加到 Microsoft Excel 的 VBA 中主要提供了广泛的好处。它主要提供视觉反馈,最终减少用户的沮丧感,并使他们保持参与和知情。它还将使我们的项目具有更专业的外观。尽管如此,它还可以通过显示进程可能中断的位置来帮助我们有效地检测错误,并允许通过突出显示工作流中缓慢的区域来优化性能。总的来说,进度条增强了我们 Microsoft Excel 工具的功能和可用性,从而使其更易于使用且高效。 如何在 VBA Microsoft Excel 中创建自己的进度条?现在,为了创建我们自己的自定义进度条,我们需要一步一步地有效地遵循以下步骤: 步骤 1:打开首先,我们需要访问 Microsoft Excel 中提供的“开发工具”选项卡。如果我们看不到“开发工具”选项卡,那么我们可以通过转到“文件” -> “选项” -> “自定义功能区”,然后勾选“开发工具”选项来启用它。启用后,我们将单击“开发工具”选项卡,然后必须单击“Visual Basic”按钮。这将打开 VBA 编辑器。在 VBA 编辑器中,我们需要转到工具栏并单击“插入”选项,然后选择“UserForm”。这将创建一个空白窗体,我们的进度条将在其中构建。 ![]() ![]() 步骤 2:自定义用户窗体属性:现在,在此步骤中,我们需要拥有我们的用户窗体,然后我们可以轻松地自定义其外观。在相应的 VBA 编辑器中,查找“属性”窗口(通常位于左下角)。在这里,我们可以轻松地更改诸如窗体的背景颜色、大小和标题(窗口顶部的标题)等内容。在自定义用户窗体时,请专注于设置其大小以适应我们所需的进度条尺寸。 ![]() 步骤 3:插入和自定义框架:接下来,我们需要在选定的用户窗体中插入一个“框架”。在此示例中,框架将充当包含进度条的容器。为了添加它,我们将从工具箱中选择框架工具(如果我们看不到工具箱,则必须转到“视图” -> “工具箱”)。在将框架添加到我们的相应用户窗体后,我们还可以使用“属性”窗口来调整其大小和外观。我们可能希望给框架一个有意义的标题,例如“进度”,以便有效地帮助用户理解其功能。 ![]() ![]() ![]() 步骤 4:创建用于进度条的标签:现在,在此特定步骤中,我们需要模拟进度条,为此我们需要在选定的框架内插入一个“标签”。通常,此标签将是进度的视觉表示,随着进程的进行而扩展其宽度。最初,我们将标签的宽度设置为 0,因为它会随着进度的进行而增加。调整其背景颜色以确保进度条脱颖而出,并使用属性窗口有效地将其定位在框架内。 ![]() ![]() ![]() 步骤 5:添加 VBA 代码以控制进度条:现在,在此步骤中,我们将编写控制进度条的代码。之后,我们需要双击用户窗体,这将打开该窗体的代码编辑器。在代码编辑器的顶部,您会看到一个下拉菜单。 ![]() 现在将选择从“Click”更改为“Activate”。这意味着当用户窗体被激活(或打开)时,代码将运行。 代码 ![]() 步骤 6:编写 For 循环来模拟进度:在此特定步骤中,我们需要初始化一个FOR 循环来有效地模拟进度条。 代码 ![]() 在 FOR 循环中,我们可以让应用程序等待 1 秒钟。为了模拟进度,我们可以缓慢增加在步骤 4中主动定义的进度标签的宽度。然而,框架中的标题也在FOR 循环中递增。为了改变宽度,我们可以有效地使用DoEvents函数来实时执行 VBA 进度条控件。 代码 步骤 7:运行用户窗体:在此特定步骤中,一旦代码准备就绪,我们就可以通过运行相应的用户窗体来测试进度条。为了实现这一点,我们可以轻松地按键盘上的 F5 键,或者在 VBA 编辑器中单击“运行”按钮。用户窗体将出现在屏幕上,并且随着循环的运行,进度条将缓慢填充。我们可以根据我们的需求和要求轻松修改进度条的结果。 ![]() ![]() ![]() 现在,通过这个例子,我们知道了如何轻松创建进度条,让我们来看看下面提到的一些更多示例,以便更彻底地理解概念。 示例 下面是一些示例,通常演示如何有效地使用进度条来检查我们相应选定任务的进度。 #示例 1:在 VBA Microsoft Excel 中创建进度条 现在让我们有效地考虑一个我们需要找出函数进度条的例子。这可以通过将用户窗体声明为相应的进度条来轻松完成。 步骤 1:创建子程序:首先,我们需要创建一个子程序,它将有效地执行将 1 到 100 的数字相乘的任务,这将是我们最终想通过进度条跟踪的任务。 代码 ![]() 步骤 2:初始化用于存储乘积的变量:在此特定步骤中,我们将初始化一个乘积变量,该变量用于存储 100 个数字的乘积值,然后将其赋值为 1。 代码 ![]() 步骤 3:使用 For 循环乘以数字:现在,在此特定步骤中,我们需要使用For 循环有效地遍历从 1 到 100 的数字,然后将它们全部相乘,通常这个循环将在我们之前创建的子程序中运行。 代码 ![]() 现在我们有了这个函数,让我们看看它的进度条。 步骤 4:打开 VBA 编辑器:为此,首先我们需要转到工具栏中提供的“开发工具”选项卡,然后单击“Visual Basic”选项。现在,VBA 编辑器打开以添加函数以及 Sub 过程。然后,我们将单击“插入”和“Userform”按钮以创建新的用户窗体或空白页。 ![]() ![]() 步骤 5:自定义用户窗体:在这一点上,我们不需要对选定的用户窗体本身进行任何更改。用户窗体通常用作相应进度条的容器。自定义用户窗体的属性,如下所示 ![]() 并且可以看到,这里也没有做任何更改。 步骤 6:将框架插入选定的用户窗体:在此特定步骤中,我们需要从相应的工具箱中插入框架控件,此框架将容纳进度条。接下来,我们需要设置选定框架的尺寸以适合进度条的大小。 ![]() ![]() ![]() 步骤 7:为进度条添加标签:现在,在标签控件内部。此特定标签将充当进度条,随着任务的有效进行而填充。之后,我们需要自定义标签的属性,例如,将初始宽度设置为 0,然后将背景颜色设置为绿色。 ![]() ![]() ![]() 步骤 8:打开用户窗体代码:在这里,在此步骤中,我们需要双击 VBA 进度条用户窗体以打开编辑器。但是,在代码编辑器中,我们需要将默认操作从Click更改为activate,这意味着一旦相应的用户窗体激活,代码就会运行。 ![]() 转到下拉菜单并将功能从 Click 更改为 Activate。它将显示用户窗体子程序为 代码 ![]() 步骤 9:实现进度条逻辑:在这里,在此步骤中,我们需要编写逻辑以在乘法任务运行时有效地更新进度条,并且通常随着循环的每个步骤完成,相应的进度条宽度会增加。 代码 ![]() 在FOR 循环中,我们需要调用前面声明的乘法函数。之后,我们可以让它等待 1 秒钟以模拟进度,因为它否则会太快,并且通常为了模拟进度,我们可以缓慢增加前面定义的进度标签的宽度,而为了改变宽度,我们可以使用DoEvents函数来实时执行 VBA 进度条控件。 代码 步骤 10:运行用户窗体:现在,最后,我们可以通过按键盘上的快捷功能键 F5,或者返回 Microsoft Excel 并触发相应的选定用户窗体来运行相应的用户窗体。随着任务的进行,您应该能够看到进度条更新,标签逐渐填充。 ![]() ![]() ![]() #示例 2:在 Microsoft Excel VBA 中创建自定义进度条 对于这种情况,现在让我们有效地考虑一个我们需要创建 10 个工作表,每个工作表有十列的例子,并且可以使用自定义进度条来主动完成。 步骤 1:创建用户窗体:首先,我们需要单击“插入”和“Userform”按钮来创建新的用户窗体或空白页。 ![]() 步骤 2:删除网格线:现在,在此特定步骤中,我们将返回 Microsoft Excel 工作表,然后转到“视图”部分。在这里,我们需要有效地取消勾选网格线。 ![]() 然而,通过取消勾选网格线选项,我们将看到工作表看起来像一个空白的无规则纸。 ![]() 步骤 3:选择首选形状:在此特定步骤中,我们需要转到工作簿中提供的“插入”部分,然后选择我们首选的形状以满足我们的需求。 ![]() 步骤 4:添加文本:在此特定步骤中,在有效选择形状后,我们现在需要向其添加文本,可以通过右键单击并单击“编辑文本”选项来完成。 ![]() 步骤 5:自定义属性:然后我们将转到之前创建的 VBA 进度条用户窗体,并根据我们的需求有效地自定义其属性。 ![]() 并且保持“ShowModal”为“False”非常重要。 步骤 6:创建框架:在此特定步骤中,我们需要创建一个新框架并使其有效地覆盖用户窗体。 ![]() ![]() 步骤 7:自定义属性:同样,我们需要在给定的属性选项卡中自定义框架的属性。 ![]() 步骤 8:创建标签:在此步骤中,我们将创建用于有效显示进度条的标签。 ![]() ![]() 步骤 9:更改标签属性:在这里,在此步骤中,我们将相应地更改选定标签的属性。 ![]() 通过执行上述步骤,我们将看到如下的用户窗体 ![]() 步骤 10:创建模块:在此特定步骤中,我们将创建一个模块,为此我们需要转到“插入”部分,然后单击“Module”选项。 ![]() 步骤 11:创建子程序:在此步骤中,我们将创建一个子程序,用于创建 10 个工作表,然后将它们重命名为WS1、WS2 等。 代码 ![]() 步骤 12:声明变量:在此步骤中,我们需要声明变量 start、sheet 总数、完成量和标签宽度。 代码 ![]() 步骤 13:声明工作表编号和进度条宽度:在此步骤中,我们将声明工作表总数以及进度条的宽度以及我们之前提到的标签名称。 代码 ![]() 步骤 14:初始化 FOR 循环:在此特定步骤中,我们将有效地初始化一个 FOR 循环,以从 1-10 添加 10 个工作表,并在选定的工作表中命名十列。 代码 ![]() 这里,应用程序在每个循环完成后会等待 1 秒钟。此外,我们需要使用 Microsoft Excel VBA 中的NAME函数来更改工作表名称。我们还需要将选定的进度条与完成的百分比值保持一致。 步骤 15:更改宽度:在此步骤中,我们将使用完成百分比值来更改选定的用户窗体进度标签的宽度。尽管如此,我们还需要根据进度增加来有效地更改进度标签的标题。 代码 ![]() 步骤 16:显示 VBA 进度条:在此步骤中,我们将显示 VBA 进度条用户窗体,为此我们需要创建另一个子程序。 代码 ![]() 步骤 17:之后,我们需要转到用户窗体,并双击它。 ![]() 紧接着,我们将看到Private Sub UserForm_Click()。现在我们将单击下拉部分,然后需要选择Activate选项。 ![]() 通过遵循上述步骤,我们将看到如图像所示的子程序。 代码 ![]() ![]() 步骤 18:现在我们将进度标签的宽度设置为 0,然后调用ActivityProcess子程序。 代码 ![]() 步骤 19:转到第 4 步中安装的形状,然后需要单击“分配宏”选项。 ![]() 步骤 20:现在,在此特定步骤中,我们将选择Show_form()子程序。 ![]() 现在,如果我们单击“插入工作表”,我们就可以在宏运行时初始化 VBA 进度条。 代码 步骤 21:单击“插入工作表”按钮后,我们将能够看到如下输出 ![]() ![]() ![]() 从进度条中,我们可以轻松地看到已打印了多少个具有列 1-10 的工作表。 重要提示众所周知,在 Microsoft Excel 中创建 VBA 进度条时,有许多重要事项需要牢记。
|
我们请求您订阅我们的新闻通讯以获取最新更新。