Udemy标志

溴代苯甲酸酯ViVisual Basic for Applications或VBA是一种脚本语言,可实现Microsoft Office产品套件中任务的自动化。它也是一种事件驱动的编程语言,包含许多有用的函数。程序员利用它来创建高效的宏。阅读更多关于VBA可以帮助你做什么,在本教程L今天,我们将在本中级教程中向前迈进一步,并查看一个重要的日期函数CDate()。此函数用于将字符串或数字转换为日期格式。

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

Microsoft Excel中的数据系统

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

在MS Excel中有两个日期系统——1900和1904。默认情况下,Windows版的Excel是1900年,Macintosh版是1904年。如果愿意,您可以通过单击Tools菜单更改日期系统。然后点击“选项”,选择“计算”选项卡。在“计算”选项卡中,选择或清除“1904日期系统”复选框。

您还应注意,从其他平台打开Excel工作表时,日期系统将自动更改。也就是说,当您打开在Excel for Macintosh中创建的工作表,同时在Excel for Windows中工作时,系统将自动选择1904日期系统。

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

日期系统

第一次约会

过去的日子

1900 1900年1月1日

(序列值1)

9999年12月31日

(串行价值2958465)

1904 1904年1月2日

(序列值1)

9999年12月31日

(串行价值2957003)

微软Excel如何解读两位数的年份

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

例如,不应该输入“00”表示2000年,而应该输入所有四个数字“2000”。

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

Microsoft Excel VBA有许多日期和时间功能。一些重要的是Date(), Day(), Now(), DateAdd(), timesial()和datesial()。它还具有相同数量的数据类型转换函数。在VBA编程中经常使用的一个重要数据类型转换函数是CDate()。来了解更多关于Excel VBA,你可以查看本课程

什么是CDate()函数

CDate标识日期和时间字面值(以及一些属于可接受日期范围内的数字),并将它们转换为日期日期类型。如果有小数部分,则转换为一天中从午夜开始的时间。

函数的作用是:根据系统的区域设置确定日期格式。如果输入的格式不是可识别的日期设置之一,则此功能将无法实现正确的日、月和年顺序。如果在日期中没有指定年份,则使用当前年份。还要注意,如果长日期格式还包含星期字符串,则不能识别它。

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

CDate(表达式)

这里的参数表达式是强制性的。当您输入有效的日期和时间表达式时,此函数将其转换为date类型。让我们用一个简单的例子来说明这个概念。

例1:

函数FnCDate()Dim strDate_1 Dim intDate_1 Dim strTime_1 strDate_1=“2014年1月24日”intDate_1=#2014年3月12日#strTime_1=“15:30:15 PM”MsgBoxCDate(strDate_1)MsgBoxCDate(intDate_1)MsgBoxCDate(strTime)结束函数

程序中声明了三个变量strDate_1、IntDate_1和strTime_1。这些变量分别被赋值为“January 24, 2014”,#12/03/2014#和“15:30:15 PM”。变量通过CDate()函数传递。输出如下所示。

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

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

对于MsgBoxCDate(strTime_1),显示的输出是“15:30:15”。

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

当您处理包含日期的数据时,您需要清楚地了解如何使用日期数据类型。从MS Excel 2000版本开始,您可以使用VBA来自动执行您原本需要手动执行的任务。这通常是在宏(在本课程中,您可以了解有关VBA宏的更多信息).VBA CDate()函数是最常用的日期函数之一,用于将存储在“字符串”变量中的日期转换为日期数据类型。下面给出的示例将有助于明确概念。

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

2014年3月24日

打开“Visual Basic编辑器”,点击“开发人员”标签,然后点击“Visual Basic”。在编辑器中,点击“插入”菜单,然后点击“模块”。这将插入一个新的代码模块。这里是编写代码的地方。

例2:

Sub converTextToDate() Dim Current_DateAs Date Dim Date_StringAs String Range("A1")。Select Date_String = Range("A1")。Value Current_Date = CDate(date_String) Range("C1").Select Range("C1").Value = Current_Date End Sub

让我们仔细看看这个节目。

在这个程序中,两个变量" Current_Date "和" Date_String "分别声明为Date和String类型。范围(" A1 ")。选择将在单元格A1中输入日期。Date_String =范围(" A1 ")。Valuestores in the “string” variable Date_String.Current_Date=CDate(date_string) converts the string into Date data type and stores it in the variable “Current_Date”.The last two steps will move the cursor to cell C1 and display the date in column C1 when the procedure is executed.

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

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

示例3:

公共子比较()Dim d1,d2作为日期d1=CDate(“2013年1月24日”)d2=CDate(“2014年1月24日”),如果(d1d2),则调试。打印“日期1晚于日期2”。如果(d1=d2),则调试。打印“日期1与日期2相同”。结束子部分

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

示例4:

Sub DeleteRowbyDate() Dim x As Long For x = 1 To Cells.SpecialCells(xlCellTypeLastCell)。行调试。打印细胞(x,“B”)。Value If CDate(Cells(x, "B")) 
    

在此示例中,日期小于“12/29/2011”的所有行都将被删除。例如,如果要从表中删除2012年12月29日之前的所有行,则必须将行更改为:

If CDate(Cells(x, "B")) 
    

我们希望这能让您很好地理解在Excel和VBA中处理日期时可以使用的各种选项。像往常一样,熟悉这些公式的最好方法是自己尝试一下。如果你愿意,Excel先生有一门很好的课程,有很多例子可以帮助你

页面最后更新:2020年2月

Excel VBA顶级课程

解锁Excel VBA和Excel宏
莱拉Gharani
4.7 (29334)
畅销书
完成Web自动化与Excel VBA
丹尼尔·斯特朗
4.5 (799)
畅销书
熟练掌握Excel宏和Excel VBA
凯尔尤
4.6 (13857)
畅销书
Excel与微软Excel VBA用户表单
凯尔尤
4.7 (1282)
带Access数据库的最终Excel VBA用户窗体
m·穆斯塔法BOLAT
4.9 (154)
最高评级
Excel宏和Excel VBA编程初学者
安德烈亚斯·埃克斯塔克洛斯
4.6 (924)
最高评级
Excel VBA编程示例(MS Excel 2016)
塔·普拉萨德Malakar
4.5 (5830)
终极Excel VBA
马克Talbert
4.7 (3382)
Excel VBA编程-完整的指南
鲍里斯Paskhaver
4.6 (3925)

更多Excel VBA课程

excelvba学生也可以学习

授权你的团队。引领行业。

通过Udemy for Business订阅您组织的在线课程和数字学习工具图书馆。

请求演示