VBA CDATE:如何将字符串或文本转换为日期
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如何解释输入为字符串或文本的日期的年份部分
- 通过29日00–当您输入日期为2014年3月24日时,Excel假定日期为2014年3月24日。
- 30到99年-这里MS Excel将两位数的年份值30到99解释为1930到1999年。也就是说,如果您在单元格中输入日期为3/24/94,Excel会将日期解释为1994年3月24日。
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先生有一门很好的课程,有很多例子可以帮助你!