2015-03-30 5 views
0

Я пробовал каждый подход, который я знаю, но мне не удалось установить значение ячейки с его датой. Я подозреваю, что есть крошечная проблема, но я не знаю, где.Заполнить значение ячейки с отформатированной датой, возвращаемой функцией

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

Изменить

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

в

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

Set используется для установки значения объекта, но вы не имеете дело с объектом при установке значения ячейки. Кроме того, определение диапазона от одной ячейки к себе также является избыточным.

+0

Я попробовал его с набором, без набора, всегда значение пусто! –

+0

В моих тестах, если у меня есть «Set», я получаю ошибку «ошибка времени выполнения». Можете ли вы показать больше своего кода? То, что у вас там, не будет компилироваться самостоятельно. Петля вне любой функции – Sobigen