我已经尝试了我所知道的每一种方法,但我还没能用它的日期来设置单元格值。我怀疑有一个小问题,但我不知道在哪里。
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()
但这些都没有奏效。
答案 0 :(得分:1)
更改
Set Worksheets(strNewSheetName).Range(Cells(1, k), Cells(1, k)).Value = CStr(strdates)
到
Worksheets(strNewSheetName).Cells(1, k).Value = CStr(strdates)
Set
用于设置对象的值,但在设置单元格值时您没有处理对象。此外,定义从一个单元到自身的范围也是多余的。