使用函数返回的格式化日期填充单元格值

时间:2015-03-30 20:21:22

标签: excel vba date

我已经尝试了我所知道的每一种方法,但我还没能用它的日期来设置单元格值。我怀疑有一个小问题,但我不知道在哪里。

Function getDates(strDateString) As Date
Dim x As Variant
x = Split(strDateString, "/")
If UBound(x) = 2 Then
    strday = x(2)
    strMonth = x(1)
    strYear = x(0)
Else
    strYear = Mid(strDateString, 1, 4)
    strMonth = Mid(strDateString, 6, 2)
    strday = Mid(strDateString, 8, 2)
End If

getDates = DateSerial(strYear, strMonth, strday)
End Function

For k = 11 To 12
    strdates = getDates(Cells(2, k).Value)
    Set Worksheets(strNewSheetName).Range(Cells(1, k), Cells(1, k)).Value = CStr(strdates)
    MsgBox (strdates)
Next k

MsgBox将返回正确的日期,但值始终为空!我尝试使用以下每种方法将其转换为字符串:

cells(r,c).value
CSTR(strDates)
cdate()

但这些都没有奏效。

1 个答案:

答案 0 :(得分:1)

更改

Set Worksheets(strNewSheetName).Range(Cells(1, k), Cells(1, k)).Value = CStr(strdates)

Worksheets(strNewSheetName).Cells(1, k).Value = CStr(strdates)

Set用于设置对象的值,但在设置单元格值时您没有处理对象。此外,定义从一个单元到自身的范围也是多余的。