Подтвердить что ты не робот

Вычитание из даты в VBA?

У меня большие проблемы с работой с датой в Excel VBA. У меня есть форма, в которой есть текстовое поле, в которое пользователь вводит дату. Проблема в том, что он может вводить его в разных форматах (например, 1.08.2011 на 1 августа или 8/1/11 за тот же день). Теперь то, что я хочу сделать, - это вычесть несколько дней с этой даты, которые он вводит в TextBox. До этого я добился успеха, и я не знаю, как это сделать. Я попробовал что-то вроде этого

Format((Format(Me.datalivrare.Value, "dd.mm.yyy") - 4), "dd.mm.yyyy")

Где datalivrare - это текстовое поле, в которое пользователь вводит дату, а 4 - количество дней, которые я хочу вычесть из этой даты... и я хочу, чтобы формат всегда был dd.mm.yyyy, независимо от того, что они входят в это текстовое поле.

4b9b3361

Ответ 2

лучше всего добавить и вычесть из дат на vba dateadd() (с отрицательным числом для подстрок) также, в вашем примере кода там отсутствует y в строке формата (он принимает только 1, 2 или 4 y, только)

Ответ 3

Сначала выберите дату, затем вычитайте дни, а затем соответствующим образом отформатируйте:

Format(DateAdd("d", -4, CDate(Me.datalivrare.Value)), "dd.mm.yyyy")

Ответ 4

Важно проверить, вводит ли пользователь значение, которое VBA может вводить в качестве даты, поэтому сначала вы должны:

If isDate(Me.datalivrare.Value) Then
    str_Date = Format(DateAdd("d", -4, CDate(Me.datalivrare.Value)), "dd.mm.yyyy")
Else
    MsgBox "Not a valid date value", vbCritical + vbOkOnly, "Invalid Entry"
End If

Я думаю, что у bluefeet-ответа была самая большая информация до сих пор, и я позаимствовал использование DateAdd и CDate.