VBA字符串至今在Excel VBA中将字符串值转换为日期

Excel VBA字符串至今

在Vba中,有一种方法可以将给定的字符串转换为日期,该方法在vba中称为CDATE函数,这是VBA中的内置函数,该函数所需的部分是首先将字符串转换为一个数字,然后将给定的数字转换为日期。结果格式仅取决于系统日期格式。

我们所有人都面临的excel常见问题之一是“日期和时间”,通常存储为文本值,一开始就未被注意到。但是,当要求它们使用该时间时,我们将知道这些值存储为文本,根本不知道如何处理它们。 “日期和时间”是一个元素中的两个组合内容,但是一旦将这些值存储为文本值,就很难使用。

如何将字符串值转换为日期?

您可以在此处下载此VBA字符串至日期Excel模板– VBA字符串至日期Excel模板

范例#1

一旦声明了VBA变量并将其分配为String,分配给该变量的任何内容都将仅被视为字符串。例如,请看下面的代码。

代码:

 Sub String_To_Date()Dim k作为字符串k =“ 10-21” MsgBox k End Sub 

在上面定义为“字符串”数据类型的代码变量“ k”中,对于该变量,我们将其值分配为“ 10-21”。

好的,让我们运行代码,然后在VBA的消息框中查看得到的内容。

我们得到的值仅是10-21,但通常这些值是日期,而不是字符串值。因此,即使分配的数据类型为“字符串”,我们仍然可以使用数据类型转换函数CDATE VBA将其转换为日期。

代码:

 Sub String_To_Date()昏暗k作为字符串k =“ 10-21” MsgBox CDate(k)结束Sub 

上面,在消息框中显示变量“ k”的结果之前,我们已经分配了CDATE函数。稍作调整,让我们看看它会产生多大的影响。

现在,我们将结果视为“日期”,而不再是“字符串”值。

范例#2

现在,请看下面的代码作为示例。

代码:

 Sub String_To_Date()Dim k作为字符串k = 43599 MsgBox k End Sub 

此时,上面的代码将把结果显示为“ 43599”,正如我们上面分配的那样。

但是一旦我们使用CDATE函数,它将转换为日期值。

代码:

 Sub String_To_Date()昏暗k作为字符串k = 43599 MsgBox CDate(k)结束Sub 

应用CDATE函数后的结果如下。

由于excel将日期存储为序列号,因此我们分配的序列号43599等于应用日期格式时的日期05/14/2019。

我们还可以将格式应用为日期“ DD-MMM-YYYY”,以准确读取日期。

代码:

 Sub Sub_String_To_Date1()Dim k作为字符串Dim DateValue作为Date k = 43599 DateValue = CDate(k)MsgBox Format(DateValue,“ DD-MMM-YYYY”)End Sub 

在上面,我声明了一个额外的变量来存储结果。对于此变量,我已经应用了CDATE转换功能。

接下来,我使用了FORMAT函数来应用“ DD-MMM-YYYY”格式的格式,结果将如下所示。

这样,我们就可以清楚地阅读日部分和月部分。它也取决于excel中的系统日期格式,因为我的系统日期格式为“ MM-DD-YYYY”,因此显示的是那样的格式,但这不应该妨碍格式设置。

例子#3

现在,我们将实际看到日期如何在工作表单元格中格式化为文本值。下面是在工作表中以文本形式存储的日期的图像。

在A2到A12列的A列中,有日期查询值,但当查看格式选项卡时,它显示“文本”格式。现在我们需要将这些值从文本转换为日期。

下面是我编写的将文本格式的日期值转换为实际日期的代码。

代码:

 Sub String_To_Date2()Dim k由于Long'数据位于多个单元格中,因此需要循环遍历每个单元格'Open For Loop For k = 2 To 12'数据从第二行开始并在第12行结束,因此2到12 Cells(k,2).Value = CDate(Cells(k,1).Value)下一个k结束子 

如果您运行代码,它将为我们提供以下结果。

要记住的事情

  • CDATE是数据类型转换功能,但可用于将VBA字符串存储的日期转换为实际的日期值。
  • CDATE函数格式的结果仅取决于系统日期格式。
  • 日期在excel中存储为序列号,因此需要格式化才能将它们显示为日期。