【问题标题】:VBA creating date with stringsVBA用字符串创建日期
【发布时间】:2014-12-12 20:44:22
【问题描述】:

我正在尝试使用日期类型执行简单的任务,但我得到的不是我想要的。我想用分隔符拆分一些单元格值并将字符串值返回给 DateValue 方法。

我的代码

Dim str2() As String
str2() = Split(Cells(ActiveCell.Row, 7).Value, ".")

Dim date1 As Date
date1 = DateValue(str(0) & "-" + str(1) & "-" & str(2))

我想要做的是获取一些特定的日期格式。单元格中的日期格式如下:26.05.14(day.month.year),我想要这样的格式 2014-05-26(year-month-day)。就这样。 DateValue 方法返回一个日期 2000-01-02。 我不知道如何查看 str2() 数组以查看 Split 方法之后的值。我该怎么做?

似乎 VBA 与 VB.NET 完全不同……我对 VBA 没有经验。 谢谢

【问题讨论】:

  • 返回的Cells(ActiveCell.Row, 7).Value 是什么?可以试试吗:date1 = CDate(Replace(Cells(ActiveCell.Row, 7).Value, ".", "/"))
  • 如何检查返回 Cells(ActiveCell.Row, 7).Value 的内容?当我将鼠标指向str2() 上方时,执行拆分方法后它不会提示我任何内容。另一方面,当我尝试查看它的值时:Dim strCheck1 As String strCheck1 = str2(0) 它给了我一个编译错误“下标超出范围”
  • date1 = CDate(Replace(Cells(ActiveCell.Row, 7).Value, ".", "/")) 给我“类型不匹配”错误。
  • MsgBox Cells(activecell.row, 7).Value 作为Sub 的第一行并告诉我们值是什么
  • 对不起。我犯了错误,因为我没有注意到第七列是空的……所以MsgBox Cells(activecell.row, 7) 给我返回了一个空值。当我尝试不为空的MsgBox Cells(activecell.row, 6) 时,它返回了 26.05.14 值

标签: excel vba date


【解决方案1】:

您将拆分的返回值存储到“str2”中,然后将变量“str”使用到 DateValue 输入中,该输入未在您的代码中定义(因此它是空的)。通过将“选项显式”放在项目顶部来避免此类错误,在 VBA 中,它不像 VB.NET 那样是强制性的,但实际上是可选的。这是工作代码:

Dim str2() As String
str2 = Split(Range("A2").Value, ".")

Dim date1 As Date
date1 = DateValue(str2(0) & "-" & str2(1) & "-" & str2(2))

【讨论】:

  • 更一般的:DateValue(year & "-" + month & "-" & day)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多