2016-09-20 2 views
1

Я пытаюсь реализовать функцию DateAdd в форме Microsoft Access 2010. У меня есть форма, когда пользователь вводит дату (имя свойства, называемое «txtStartDate», то я хочу, чтобы результат в другой части составлял 18 календарных дней в будущем (имя свойства называется «textEndDate»).Функция DateAdd в Microsoft Access VBA

I знать формат будет

=DateAdd("d", 18, txtStartDate) 

но как я пишу это в VBA коде для реализации?

+0

Я считаю, что у вас есть свои критерии в неправильном порядке см: https://support.office.com/en-us/article/DateAdd-Function-63befdf6-1ffa-4357-9424-61e8c57afc19, поэтому он должен быть '= DateAdd (" d ", 18, txtStartDate)' –

+0

Спасибо @ScottCraner – ktcn414

ответ

0

Надеется, что это помогает немного, две декларации по первоначальной дате и новой дате. Msgbox затем показывает их оба здесь на разных линиях:

sub addingDate() 
Dim txtStartDate As Date 
Dim txtEndDate As Date 
    txtStartDate = Now 'Or wherever you get this info from 
    txtEndDate = DateAdd("d", 18, txtStartDate) 
    MsgBox (txtStartDate & vbNewLine & txtEndDate) 
End Sub 
+0

Спасибо за помощь! – ktcn414

0

Похоже, вы неявно конвертируете значение текстового поля из строки в дату. Вы можете добавить некоторые проверки, как:

If IsDate(txtStartDate) Then 

И вы хотите быть особенно сознательными поведения должны быть ваш код работает на системах, которые имеют различные региональные настройки Даты для американских/английских/японских дат. То, что может, требует использования механизма выбора даты или другой проверки даты на самом элементе управления.

0

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

=DateAdd("d", 18, [txtStartDate]) 
1

Это звучит, как вы хотите, чтобы установить его после обновления. Таким образом, использование AfterUpdate события даты начала:

Private Sub txtStartDate_AfterUpdate() 

    Dim EndDate As Variant 

    If IsDate(Me!txtStartDate.Value) Then 
     EndDate = DateAdd("d", 18, Me!txtStartDate.Value) 
    Else 
     EndDate = Null 
    End If 
    Me!txtEndDate.Value = EndDate 

End Sub 
0

Попробуйте:

= DateAdd("d", 18, cdate(txtStartDate) 
Смежные вопросы