Добавьте x количество дней к дате с vba в excel
Я пытаюсь добавить x количество дней на длинную дату с помощью всплывающего окна.
Public Function AskForDeadlinePlus4() As String
Dim strUserResponse As String
strUserResponse = InputBox("Enter Validuntil Date: Add # of Days To Survey end date")
strUserResponse = FormatDateTime(strUserResponse + I2, vbLongDate)
ActiveSheet.Cells(2, 10).Value = strUserResponse 'the 2, 10 is the cell reference for J2 - row 2, column 10.
End Function
где дата окончания съемки в ячейке I2.
когда я запускаю это, я получаю (Googling, как это сделать, я устаю)
4 + I2
(где I2 = Friday, April 05, 2013
) >> Wednesday, January 03, 1900
конечно, мне нужно Tuesday, April 09, 2013
спасибо
3 ответов
Я думаю, что этот код - это то, что вы после использования DateAdd(<base e.g. Day = "D">, <number>, <date>)
функция:
Public Function AskForDeadlinePlus4() As String
Dim strUserResponse As Date, iNumber As Long, rResponse As Variant
AskForDeadlinePlus4 = "" 'set default value
iNumber = CLng([I2])
rResponse = InputBox("Enter Validuntil Date: Add " & iNumber & " Day(s) To Survey end date")
If rResponse = False Then
'no value entered
Exit Function
ElseIf Not IsDate(rResponse) Then
'no date entered
Exit Function
Else
'valid date entered
strUserResponse = DateAdd("D", iNumber, CDate(rResponse))
End If
AskForDeadlinePlus4 = FormatDateTime(strUserResponse, vbLongDate)
End Function
хотя всего несколько пунктов:
- функция input возвращает булево FALSE если вход не введен.
- тест, который вы использовали выше, является функцией и возвращает значение при использовании
- если вы хотите использовать в другом коде VBA,
i = AskForDeadlinePlus4
- это его использование; - но вы также можете использовать его в ячейке, но только при необходимости как и при каждом вычислении, это вызовет ввод и для каждой ячейки его в,
=AskForDeadlinePlus4
; и - плюс я добавил чек, чтобы узнать, была ли введена дата, поскольку пользователь не может ввести действительную.
если вы хотите использовать в VBA:
Sub GetInfo()
'the 2, 10 is the cell reference for J2 - row 2, column 10.
ActiveSheet.Cells(2, 10).Value = AskForDeadlinePlus4
End Sub
вместо использования DateAdd, который требует больше ввода, вы также можете использовать DateValue. Следование сделает это.
DateValue(strUserResponse )+I2
другое решение будет использовать функцию преобразования, CDate.
CDate(strUserResponse )+I2