VBA Datediff:如何在两个日期之间找到“差异”
Visual Basic for Applications(VBA)集成到Microsoft Office套件附带的程序中,如Microsoft Word和Microsoft Excel。VBA允许您编写宏(短,简单的程序),可用于自动执行重复执行的任务。例如,在Excel中,您可以编写一个宏,允许您从一列中复制一系列单元格中找到的数据并将其粘贴在另一列中。
您可以看到这是有用的 - 特别是如果您使用Excel进行办公工作!使用Visual Basic for Applications需要对Visual Basic语言的某种熟悉。Visual Basic是由Microsoft开发的,使开发人员可以轻松制作Windows友好的应用程序。如果您不熟悉应用程序的Visual Basic,您应该考虑报名参加VBA入门课程和我们在一起。我们将复习所有你需要知道的东西(从基础到高级的东西)——你将很快编写你自己的宏。在我们继续之前,你可能想通过这个快速入门VBA,刷新基础知识。
DateDiff函数语法
在本教程中,我们将给你一个详细的,容易理解的VBA中的DateDiff函数概述。我们还将教你如何从基础开始编写自己的宏。即使您不熟悉这个过程,如果您完全按照本教程中概述的步骤进行操作,您也应该能够创建一个有效的宏。
VBA中的日期功能可用于查找两个不同指定时间段之间的时间间隔。Dationiff函数的语法是:
Dationiff(间隔,date1,date2,[firstdayofweek],[FirstWeekofyear])
您始终必须指定间隔,date1和date2参数。您无需指定FirstDayOfWeek和FirstWeekofyear参数。您可以将区间参数,平日,周,小时,第二或年(其他值)更改为日期,平日,周,小时,第二个或年份。DATE1和DATE2将是您两个期间的开始日期和结束日期 - 您指定的间隔将是您接收结果的方式。例如,如果您想在几天内发现两个日期之间的区别,则必须使用“天”间隔。如果您想在数周内发现两个日期之间的差异,则必须使用“周”时间间隔。如果您未指定FirstDayofWeek参数,本周的第一天将按周日设置。如果未指定FirstWeekofyear参数,则将在一年的第一周将设置为包含1月1日的一周。
创建命令按钮
在我们向您展示编写日期函数的代码之前,应在Excel电子表格中插入命令按钮。什么是命令按钮,我们为什么需要一个?单击时命令按钮运行它链接到的代码。您可以使用命令按钮开始执行宏并获取结果。命令按钮的一个示例是内置于Windows中的计算器上的“=”按钮。在我们的情况下,我们将命令按钮链接到日期函数。
首先,您应该启用Excel中的developer选项卡。这个选项卡默认是禁用的。开发人员允许您创建宏,并向电子表格添加功能和设计。要启用该选项卡,右键单击顶部的ribbon,然后在下拉菜单中选择“自定义ribbon…”选项。在这里,你应该选择“Developer Tab”选项,然后点击ok,就像下面的截图一样。你也可以在我们24小时VBA培训课程中查找。
一个名为Developer的新选项卡现在可以在顶部的View选项卡旁边使用。Developer选项卡有我们需要的命令按钮。找到Insert选项并选择Active X controls子菜单下的“命令按钮”。顶部的设计模式按钮将突出显示,指针将变成一个黑色叉。点击电子表格中的任意单元格生成命令按钮,如下图所示:
您可以在电子表格中的任何位置拖放命令按钮。默认情况下,命令按钮上显示的标题为“CommandButton 1”。您可以通过右键单击并选择“属性”来更改“命令”按钮的名称。左侧将弹出大量的属性列表。我们建议您在此处不改变任何内容(特别是如果您是vba新的),除了标题标签。重命名标题标签将将命令按钮的VisiBlename更改为其他内容。例如,在我们的图像中,我们已经更改了命令按钮的可见标题为“查找日期”:
现在,我们需要为DateDiff函数编写代码,并将其链接到这个命令按钮。这样,当我们点击“查找日期”时,DateDiff函数将返回一个值。右键单击命令按钮,选择“查看代码”选项。这将打开Microsoft Visual Basic for Applications界面。这是我们编写代码的地方。它应该是这样的:
我们将在私有子命令Button1_Click()和结束子语句之间编写Doatififf函数的代码。CommandButton1_Click()代码行告诉VBA在用户单击“命令”按钮时会执行vba在其上找到的代码。你可以了解有关如何在此VBA课程中创建自己的宏和命令按钮的更多信息。
使用DateDiff函数查找两个日期之间的差值(以天为单位)
现在,我们终于可以为DateDiff函数编写代码了。首先,让我们创建一个DateDiff函数,它可以让我们找出两个时间段之间的天数差异。如上所述,DateDiff函数的语法是:
Dationiff(间隔,date1,date2,[firstdayofweek],[FirstWeekofyear])
首先,我们需要初始化三个不同的变量来保存结果的值(数天数)和两个时间段:date1和date2。如果您之前研究过其他语言(如C或Java),则知道我们需要为什么需要声明这些变量。如果你不熟悉编程,你也可以注册基本的C编程课程和我们在一起。
声明变量的代码如下:
Dim dateone As Date, datetwo As Date, days As Integer
这里,我们将dateone和datetwo声明为“日期”变量。它们将以日期格式保存数据(“月、日、年”)。Days将以“整数”(数字)保存数据。
接下来,我们需要为dateone和datetwo变量赋值。这就是我们的两个时间段:
约会= datevalue(“2014年3月10日”)DateTwo = DateValue(“2014年3月15日”)
然后,我们编写DateDiff函数。我们使用“days”变量来实现这个目的:
Days = Dationiff(“D”,约会,DateTwo)
在这里,“D”告诉Visual Basic以使用“日”时间间隔。
最后,我们需要显示结果。为此,我们使用消息框。只需在末尾输入一行代码:
msgbox日
完整的程序如下:
私有子CommandButton1_Chitictton1_Chick()按日期,DateTWO作为日期,天数为DateOne = DateValue(“2014年3月10日”)DateTwo = DateValue(“2014年3月15日”)Days = DationIff(“D”,DateDiff(“D”,DateOrd(“D”))Msgbox日结束子
您可以复制粘贴整个代码,但我们建议您自己输入它,以了解VB。一旦你完成输入,alt选项卡到你的Excel电子表格。设计模式将是激活的-单击设计模式按钮(在开发人员选项卡)来取消激活它。最后,单击command按钮。应该会弹出一个日期不同的消息框。您可以更改dateone和datetwo变量的值以获得不同的结果。你也可以尝试在此VBA课程中的一些示例进行Excel。
使用DateDiff函数查找两个日期之间的差异(以周为单位)
您可以使用日期的日期在几周数,而不是天数之间找到差异。代码类似 - 您必须使用“WW”替换“D”(间隔)参数。只需修改我们之前写的程序,就像这样:
私有子CommandButton1_Click()暗示约会日期,DateTWO作为日期,天数为DateOne = DateValue(“2014年3月10日”)DateTwo = DateValue(“2014年3月15日”)Days = DationIff(“WW”,约会,DateTwo)Msgbox日结束子
现在尝试单击“命令”按钮(记得禁用设计模式)。您将获得“0”结果。为什么会发生这种情况?
在本例中,两个日期之间的差值以周为单位为0。如果您将dateone或datetwo的值更改为1个月或2个月,您将得到不同的结果。自己尝试一下吧。您也可以将时间间隔更改为秒(s)、分钟(n)、小时(h)、年(y)或月(y)。对于列表,用鼠标选择VBA中的DateDiff函数(高亮显示)并按F1。您还可以尝试指定firstdayofweek和firstweekofyear参数。
日期函数是VBA中最简单,最有用的功能之一。随意尝试。一旦你准备好踩到一个档次,就去用我们的高级VBA课程伸展自己。