vba cdateVisual Basic for Applications或VBA是一种脚本语言,可以实现Microsoft Office系列产品的任务自动化。它也是一种事件驱动的编程语言,其中包含许多有用的函数。程序员利用它来创建高效的宏。了解更多关于什么VBA可以帮你做,在这个tutorial.今天,我们将在这个中间教程中更进一步,看看一个重要的日期函数CDate()。此函数用于将字符串或数字转换为日期格式。

我们假设你有工作知识的MS Excel和VBA。如果你是新概念,我们建议你通过我们的介绍课程到Excel VBA

日期系统在Microsoft Excel中

日期和时间函数是MS Excel和VBA中常用的函数。因此,如果您想在程序中操作和使用日期和时间函数,那么了解它们的基本概念是非常重要的。请注意,MS Excel将日期存储为连续编号,称为串行值。MS Excel认为时间是一天的一部分,它以小数形式存储。日期和时间可以加减。因此,他们可以包括在许多计算和VBA程序。也就是说,您可以比较两个日期或从另一个日期中减去一个日期。你可以了解更多有关这在我们的Excel课程

有在MS Excel-两个日期系统的1900年和1904年通过默认的Microsoft Excel的Windows 1900和Macintosh是1904,如果你想通过单击工具菜单上可以更改日期系统。然后点击“选项”,然后选择“计算选项卡。”在计算选项卡,选中或清除1904日期系统复选框。

您还应该知道,当您从另一个平台打开Excel工作表时,日期系统将自动更改。也就是说,当您打开一个为Macintosh而在Excel中创建的工作表时,同时在为Windows而在Excel中工作时,系统将自动选择1904日期系统。

下表显示了每个日期系统中第一个和最后日期。

日期系统

第一次约会

最后日期

1900 1900年1月1日

(1)串行价值

12月31日,9999

(串行值2958465)

1904 1904年1月2日

(1)串行价值

12月31日,9999

(串行值2957003)

Microsoft Excel如何解释两位数字的年份

如果您正在使用Microsoft Windows 2000或更高版本,控制面板中的区域选项将控制Excel如何解释两位数的年份。如果希望MS Excel按照您的预期假设年份值,请输入一个四位数的年份值。原因是,Excel无法诠释世纪。

例如,而不是输入“00”的2000年,你应该输入所有的四位“2000”。

如何日期的MS Excel解释年份部分,输入一个字符串或文本

Microsoft Excel中VBA有许多日期和时间功能。1.几个重要的被日期(),日(),现在(),使用DateAdd(),TimeSerial的()和DateSerial()。它还具有的数据类型转换函数相等数目。被频繁在VBA编程中使用的一种重要的数据类型转换功能是CDATE()。至了解更多有关Excel VBA,你可以看看这门课程

什么是CDate()函数

CDATE识别日期和时间文字并将它们转换到日期日期类型(有一些数字,在可接受的日期范围内一起)。如果存在数的小数部分它被转换为从午夜开始一天中的时间。

该CDATE()函数识别日期格式取决于系统的区域设置。日,月,年的正确顺序将不受此功能如果在低于公认日期设置以外的其他格式输入来实现。如果日起不指定年份,,则使用当前年份。还要注意的是长日期格式无法识别,如果它也包含了一天的星期几的字符串。

VBA CDate()将任何数据类型的值(字符串或整数)转换为日期类型。date函数的语法如下所示

CDate(表达)

这里参数表达式是强制性的。当你输入一个有效的日期和时间表达式此功能将其转换为Date类型。让我们把这个概念明确使用一个简单的例子。

示例1:

MsgBoxCDate(strDate_1) / MsgBoxCDate(intDate_1) / MsgBoxCDate(strTime_1) / MsgBoxCDate(strTime_1

在节目中,三个变量strDate_1,IntDate_1和strTime_1声明。这些变量赋值“2014年1月24日”,分别为#10/03/2014#和“15时30分15秒PM”。这些变量通过CDATE()函数。输出如下。

对于MsgBoxCDate(strDate_1)输出中显示为“24-01-2014”。

对于MsgBoxCDate(intDate_1),显示的输出是“03-12-2014”。

对于MsgBoxCDate(strTime_1)输出中显示为“15时30分十五秒”。

如何转换文本字符串日期在MS Excel VBA使用CDATE()函数

当您正在使用包含日期数据的工作,你需要对如何使用日期数据类型清晰的概念。从MS Excel版本2000年起,你有VBA来自动执行任务,否则你将手动执行。这通常是用宏的帮助下(完成你可以学习更多关于VBA宏在这个课程)。VBA CDate()函数是最常用的日期函数之一,用于将存储在“String”变量中的日期转换为日期数据类型。下面给出的示例将有助于明确概念。

打开MS Excel,按以下格式在A1单元格输入日期:

2014年3月24日

要打开“Visual Basic编辑器”,单击“开发”选项卡,然后在“Visual Basic中”。在编辑器中点击“插入”菜单,然后单击“模块”。这将插入一个新的代码模块。这里是你写的代码。

示例2:

子converTextToDate()昏暗Current_DateAs日期昏暗Date_StringAs字符串范围( “A1”)。选择DATE_STRING =范围( “A1”)。值CURRENT_DATE = CDATE(DATE_STRING)范围( “C1”)。选择范围( “C1”)。值= CURRENT_DATE结束子

让我们仔细看看这个程序。

在这个方案中,两个变量,“CURRENT_DATE”和“DATE_STRING”已被定义为类型分别为日期和字符串。范围(“A1”)。选择将获得的细胞A1.Date_String =范围(“A1”)签订Valuestores在“字符串”变量Date_String.Current_Date = CDATE的日期。(DATE_STRING)将字符串转换成Date数据类型和将其存储在变量“CURRENT_DATE”。最后两个步骤将光标移动到小区C1,并执行程序时显示在柱C1的日期。

在下一个程序中,我们将了解如何使用CDate()函数比较VBA中的两个日期。

注意,要比较VBA中的日期,需要将日期存储在类型为“Date”的变量中。但是,如果要比较的日期是以数字或字符串的形式输入的,则需要使用CDate()函数对它们进行转换。“If语句”用于比较日期。下面的示例有助于清晰地说明这个概念。

实施例3:

d1 = CDate("24/1/2013") d2 = CDate("24/1/2014") If (d1 < d2)则调试。打印“日期1比日期2早。”If (d1 > d2) Then Debug.Print "Date 1 occurs later than date 2." If (d1 = d2) Then Debug.Print "Date 1 is the same as date 2." End Sub

如果您碰巧经常处理包含日期列的数据,那么创建一个宏总是明智的。在需要删除表中的行时调用该宏。下面的示例删除了“12/30/2011”之前的日期。

实施例4:

子DeleteRowbyDate()昏暗X只要对于x = 1至Cells.SpecialCells(xlCellTypeLastCell).Row Debug.Print细胞(X, “B”)。值如果CDATE(细胞(X, “B”))
    

在这个例子中,日期小于“12/29/2011”的所有行都将被删除。例如,如果您想从表中删除2012年12月29日之前的所有行,那么您将必须更改行为:

如果CDate(cell (x, "B")) 
    

我们希望这为您提供了多种选项提供给您一个很好的理解,在Excel和使用VBA日期工作时。像往常一样,最好的办法来熟悉这些公式,就是去试一下为自己。如果你愿意的话,Excel先生有一门很好的课程,有很多例子可以帮助你

在Excel VBA热门课程

介绍到Microsoft Excel VBA
凯尔皮尤
4.7 (960)
解锁Excel的VBA和Excel宏
莱拉Gharani
4.6 (21046)
畅销书
掌握microsoftexcel宏和Excel VBA
凯尔皮尤
4.5 (9479)
畅销书
终极Excel的VBA
马克塔尔伯特
4.5 (2956)
Excel的VBA编程 - 完全指南
鲍里斯Paskhaver
4.6 (3257)
完整的Web自动化与Excel VBA
丹尼尔强
4.6 (606)
畅销书
最终的Excel VBA阵列课程
丹尼尔强
4.4 (406)
Excel宏和Excel VBA编程初学者
Andreas Exadaktylos
4.2 (614)

更多Excel的VBA课程

Excel VBA学生也可以学习

让你的团队。领导行业。

获取订阅的在线课程和数字学习工具库与您Udemy组织业务。

请求一个演示