VBA Microsoft Excel 中的 Now 函数2025年2月28日 | 阅读 20 分钟 众所周知,在 VBA(Visual Basic for Applications)中,“Now 函数”被认为是负责从系统检索当前日期和时间的根本工具。它主要在 Microsoft Office 应用程序(包括 Microsoft Excel、Access 和 Word)中的各种自动化流程中发挥重要作用。VBA 通常用于高效地简化任务、管理数据和执行计算。该函数以 **Date 数据类型**返回日期和时间,提供了调用时的精确瞬间快照,这在需要精确计时以有效跟踪、记录或更新数据时尤其有用。与仅负责返回日期的 **Date 函数**或用于检索时间的 **Time 函数**不同,Now 函数主要结合了两个信息——当前日期和当前时间,从而提供了一个全面的时间戳。这种双重功能使其在需要日期和时间的场景中非常有用,例如记录过程或事件的开始或结束,同时管理所选电子表格中的时间敏感操作。 ![]() 尽管如此,“Now 函数”最常用于自动将时间戳插入到需要所选数据集实时更新的 Microsoft Excel 表格、Access 数据库或其他文档中。例如,它可以自动记录数据输入的确切时刻、生成报告的时刻或任务完成的时刻。这可以提高数据管理中的准确性和效率,并最大限度地减少手动输入的需求,从而降低人为错误的潜在可能。 此外,Now 函数经常在基于时间的计算中使用,其中将当前日期和时间与存储值进行比较至关重要。在计划、跟踪或截止日期管理系统中尤其如此。
在本教程中,我们将学习 Microsoft Excel 中VBA NOW函数 的概念,并通过各种示例来促进 NOW 函数的使用。 Microsoft Excel 中的 VBA NOW 函数是什么意思?俗话说,VBA(Visual Basic for Applications)中的“NOW 函数”专门用于从系统获取当前日期和时间。与 Microsoft Excel 中的 NOW 函数一样,它不需要任何参数。我们可以通过键入 NOW 函数来直接使用它,无论是否带括号,它将分别返回当前的日期和时间。” ![]() 但是,在 Microsoft Excel 中,NOW 函数的工作方式类似。它也不接受任何参数,并在被调用时返回系统当前的日期和时间。虽然 VBA 中的DATE函数仅返回当前日期,但 NOW 函数同时提供日期和时间,这在许多情况下也很有用。
![]() ![]() 如果我们正在使用 Microsoft Excel 或 VBA 并需要引用当前的日期和时间,那么 NOW 函数是一个简单而有效的工具。尽管如此,我们无需担心添加任何参数或复杂的公式——只需调用该函数,我们就会立即获得系统当前的日期和时间。总而言之,当我们想要自动化需要当前日期和时间的任务时,NOW 函数非常有用,它提供了一种无需额外编码即可从系统提取此信息的简单方法。 VBA Excel 中 NOW 函数的语法语法 在此语法中,我们通常不向Now 函数传递任何参数——它始终称为Now()。当我们运行此函数时,它会在代码执行的那一刻给出确切的日期和时间。 示例 ![]() ![]() 在这个简单的宏中,当我们实际运行ShowDateTime时,会弹出一个消息框,显示类似“26/09/2024 14:18:54”的内容(确切的日期和时间格式主要取决于我们的系统)。 它在 Excel 中的工作原理
用途 这在需要为事件添加时间戳的应用程序中非常有用,例如在记录数据或记录宏中执行特定操作的时间时。 优点在 Microsoft Excel 中使用 VBA Now 函数的各种优点如下: ![]()
总而言之,VBA Now 函数是一个强大的工具,用于自动化与日期和时间相关的任务,提高准确性,并在我们选定的 Microsoft Excel 电子表格中提供实时信息。 如何使用 Microsoft Excel VBA NOW 函数?为了有效演示如何在 Microsoft Excel VBA 中使用Now函数,我们需要遵循各种提到的步骤。以下示例将帮助我们创建一个简单的数字时钟,该时钟将在所选单元格中持续更新当前数据。 ![]() 步骤 1:打开 Excel 工作簿:首先,我们需要打开一个 Excel 工作簿。然后,我们需要访问工具栏中提供的“开发工具”选项卡,其中包含处理 VBA 的工具。
![]() 现在,“开发工具”选项卡已可用,我们将打开 VBA 代码编辑器。
![]() 步骤 2:插入新模块:现在,在此步骤中,我们将创建一个模块来编写我们的代码。
![]() 步骤 3:初始化数字时钟的子过程 在此步骤中,我们将主动创建一个子过程,该过程将有效地利用Now函数在 Microsoft Excel 中显示当前时间。1. 从定义子过程开始。我们必须在所选模块中键入以下代码: 代码 ![]() 这行代码主要初始化一个名为UpdateDigitalClock的新子程序。 步骤 4:设置 Do Loop:在此步骤中,我们将设置一个Do Loop,该循环将不断更新显示的时间。因此,在子程序内部,我们需要键入Do来启动循环。 代码 ![]() 这将允许代码反复运行。 步骤 5:将当前时间打印到 A1 单元格:在此特定步骤中,在循环内部,我们将将当前时间打印到名为NOW_Use的工作表单元格 A1。 代码 ![]() 此外,此特定代码将把当前的日期和时间分配给 A1 单元格。 步骤 6:将循环延迟一秒:在此步骤中,为了使时钟每秒更新一次,我们需要通过使用Wait 函数来暂停循环一秒: 代码 ![]() 这行代码通常会导致循环在再次开始之前等待一秒钟,从而有效地提供准确的结果。 代码 步骤 7:运行子程序:编写完 VBA 代码后,是时候有效地运行选定的代码子程序并有效地监控输出了。
![]() ![]() 一分钟后, ![]() 一分钟后, ![]() 这被认为是一个简单的示例,通常用于说明 VBA Now 函数的用法。 Microsoft Excel VBA 中 NOW 函数的示例现在,让我们来看一些有趣的示例,其中Now ()函数可以在实际应用中有效使用,以有效的方式完成任务。 # 示例 1:捕获当前日期和时间。 Microsoft Excel VBA 中的Now () 函数有效地用于在发生特定操作时捕获当前的日期和时间。在此示例中,我们将创建一个系统来记录特定单元格更新的确切时间。这对于跟踪更改和维护 Microsoft Excel 中的更新记录非常有帮助。 现在,让我们逐步完成以有效实现此目的: 步骤 1:访问 VBA 编辑器 1. 首先,我们需要打开我们实际要跟踪更改的 Microsoft Excel 工作簿。 ![]() 2. 之后,我们必须右键单击我们想在此处有效记录所有更改的表。 ![]() 3. 从屏幕的下拉菜单中,我们将单击“查看代码”。这将为该特定工作表打开 VBA 编辑器。 步骤 2:声明一个私有子程序:现在我们已经打开了 VBA 编辑器,我们必须通过声明一个子程序来开始这一步。 代码 ![]() 这行代码通常会设置一个过程,当在相应选定的工作表中进行更改时,该过程将自动运行。 步骤 3:定义用于监视更改的目标单元格:在此步骤中,我们必须告诉 Microsoft Excel 我们实际要监视哪个特定单元格以进行更改。为此,我们将创建一个范围来有效存储该特定单元格的值。 代码 ![]() 通常,这行代码将TargetCell声明为一个范围,然后将其分配给当前工作表上的“B1”单元格(即Me.Range("B1"))。Me 关键字通常指代当前工作表。 步骤 4:设置用于记录更改的单元格范围:此时,我们将指定我们实际要跟踪的相应单元格或特定单元格范围。在此案例中,我们分别跟踪在“B1”单元格中发生的更改。 步骤 5:编写 IF 条件以触发 Now 函数:现在目标单元格已设置并准备就绪,我们必须添加逻辑以确保Now() 函数仅在更改该单元格时触发。If 语句将有效地处理此问题。 代码 ![]() 相应的If 条件检查 Target(发生更改的单元格)是否与相应的TargetCell(单元格“B1”)相交。它还确保TargetCell不为空。如果两个条件都为真,则使用Now() 函数将当前日期和时间插入“C1”单元格。 步骤 6:测试代码:现在代码已完成,我们将返回到 Microsoft Excel 工作表。尝试在“B1”单元格中输入一个值。为此,我们应该会看到当前日期和时间出现在“C1”单元格中。每次在“B1”单元格中进行更改时,代码将自动在“C1”单元格中记录更改时间。 这是相应示例的完整代码: 代码 通过遵循上述所有步骤,我们可以成功地在 Microsoft Excel VBA 中实现一个系统,该系统可以记录对特定单元格进行更改的确切时间。这种方法在必须跟踪对所选工作所做的更新或修改的场景(例如在协作工作环境中或处理时间敏感数据时)中非常有用。 # 示例 2:测量用户在 Excel 工作表中单击按钮两次之间的时间。现在,为了测量用户窗体中按钮两次单击之间的时间,使用 Microsoft Excel VBA,我们只需遵循以下步骤。此过程主要允许我们有效地捕获按钮首次单击到再次单击之间的时间。 步骤 1:在 Microsoft Excel VBA 中创建用户窗体:首先,我们需要在 Microsoft Excel VBA 中创建用户窗体。 1. 首先,我们需要打开 Microsoft Excel。 ![]() 2. 之后,我们必须访问 VBA 编辑器。这可以通过按Alt + F11来完成。此快捷方式将打开 Visual Basic for Applications (VBA) 编辑器。 ![]() 3. 然后,在 VBA 编辑器中,我们将转到顶部菜单,单击插入选项,然后选择用户窗体。 ![]() 步骤 1a:执行上述步骤后,我们将看到一个空白的用户窗体出现在编辑器中。通常,此窗体是我们的工作区,我们将在此处添加控件,例如按钮和标签。 ![]() 4. 自定义用户窗体:我们可以有效地调整窗体大小,更改其背景颜色,或设置标题。要实现这一点,我们需要选择用户窗体,然后在属性窗口中修改其属性,该窗口通常位于编辑器的左侧。 ![]() 步骤 1b:在进行更改后,相应的用户窗体应反映我们的自定义设置,从而赋予它独特的外观和感觉。 ![]() 步骤 2:创建标签并自定义其属性:现在,在此特定步骤中,我们需要添加一个标签来向用户提供说明。 1. 添加标签:在工具箱中(如果未显示,请转到视图 > 工具箱),我们将选择标签控件,然后单击并拖动用户窗体以创建标签。 ![]() 步骤 2a:添加标签后,我们可以通过更改其属性轻松自定义它。
![]() 通常,此特定标签将指示用户在看到用户窗体时应执行的操作。 步骤 3:添加命令按钮:在此步骤中,我们需要有效地添加一个按钮,用户可以单击该按钮来启动计时器。 1. 添加命令按钮:在相应的工具箱中,我们必须选择它并将其有效地拖到用户窗体上。 然后,此按钮将作为启动和停止计时器的触发器。 ![]() 2. 自定义命令按钮:在此步骤中,我们只需单击按钮并将 Caption 属性更改为“开始计时。”。编辑完成后,我们的用户窗体现在应该会显示标签和按钮。 ![]() 但是,此设置将使用户窗体具有交互性并准备好接收用户输入。 步骤 4:声明一个日期变量:在为按钮编写代码之前,我们需要声明一个日期变量来存储第一次单击的时间。 1. 声明变量:在代码模块的顶部,在任何过程之外,我们需要添加以下代码行: ![]() 步骤 4:上述声明将允许StartTime在多次单击之间保留其值。 步骤 5:检查和设置开始时间:现在,在此步骤中,我们将编写按钮单击时将运行的代码。
代码 ![]() 上述相应代码检查StartTime是否为零。如果是,它会将当前时间(使用 Now)分配给StartTime,并显示一个消息框,指示计时器已启动。 步骤 5:添加第二次单击的代码:现在,在相应的Else 块中,我们将编写将有效地在第二次单击按钮时执行的代码。 1. 完成 Else 块:为此,我们需要在单击事件的Else部分中添加以下代码行: 代码 ![]() ![]() 步骤 6:此代码通过从当前时间减去StartTime来计算自第一次单击以来经过的时间。然后,它以小时、分钟和秒的格式在消息框中显示经过的时间。最后,它将StartTime重置为零,以有效地为下一次测量做准备。 ![]() 两次单击之间大约过去了 46 秒。 此外,此特定过程允许我们仅通过在用户窗体中使用 Excel VBA 来创建一个简单的计时器。我们可以通过一次单击按钮启动计时器,通过第二次单击停止计时器,从而显示两次单击之间经过的时间。此特定示例有效地演示了 VBA 的基本功能,并为 Microsoft Excel 中的更复杂应用程序奠定了基础。 Timer 函数的替代方法在处理 VBA(Visual Basic for Applications)时,大多数用户通常依赖Timer 函数来测量时间间隔,方法是返回自午夜以来的秒数。虽然这对于基本计时需求已经足够,但在许多情况下我们需要更高的精度,例如测量毫秒甚至微秒。尽管如此,我们也有几种提供更高精度和灵活性的替代方法。 用于精确计时的 Windows API 函数如果我们实际上正在寻找比“Timer 函数”能有效提供的更精确的计时,那么让我们考虑使用Windows API 函数,它们就是GetTickCount和QueryPerformanceCounter。这两个函数都能让我们以更高的精度来测量时间。
通过使用 Now 函数另一个最直接的选择是Now 函数,它为我们提供了当前的日期和时间。我们可以使用此函数来有效地计算一段代码通常需要多长时间才能运行。为了实现这一点,我们将在代码运行之前捕获开始时间,然后在代码完成后检查结束时间。这两个时间之间的差异将告诉我们代码执行了多长时间。 下面是一个简单的例子 然而,这种特定方法对于较长的任务效果很好,但由于缺乏毫秒精度,它可能不是测量极短时间间隔的最佳选择。 SetTimer 和 KillTimer 函数如果我们被要求安排动作或事件在一定时间间隔后发生,那么在这种情况下,我们可能需要查看 Windows API 中的“SetTimer 和 KillTimer 函数”。所有这些函数主要允许我们设置一个计时器,该计时器将在特定毫秒数后有效地触发,从而提供比内置 VBA 方法更有效的灵活性。
使用 Wait 和 Sleep 函数暂停如果我们被要求将代码暂停特定时间,那么在这种特定情况下,我们可以在 Microsoft Excel VBA 中有效地使用 Wait 和 Sleep 函数。
这是一个使用 Sleep 函数的示例: 并且众所周知,Wait 和 Sleep 函数在有效创建延迟方面非常方便,但要小心不要过度使用它们,因为它们会完全中断我们程序的执行。 创建自定义计时函数如果我们想在我们的代码中完全控制计时,那么在这种情况下,我们可以轻松地创建自定义计时函数。所有这些函数都可以测量特定过程从开始到结束所花费的时间,并且可以有效地定制以满足我们特定的需求,而不会出现任何延迟。 这是一个创建自定义计时函数的简单示例: 此外,在此示例中,该函数使用Timer 函数来跟踪代码何时开始和结束,然后计算时间差。我们还可以根据我们的计时需求进一步增强此函数。虽然 Microsoft VBA 中的 Timer 函数对于基本的计时任务非常有用,但我们有几种替代方法可供选择,它可以提供更高的精度和控制。无论我们选择GetTickCount和QueryPerformanceCounter等 Windows API 函数,使用内置的Now函数,还是有效地创建我们自己的自定义函数,我们都可以有效地测量和管理 VBA 项目中的时间。 需要注意的事项在使用 Microsoft Excel 中的 VBA Now 函数时需要记住的各种重要事项如下:
下一个主题Vba-overflow-error |
我们请求您订阅我们的新闻通讯以获取最新更新。