Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 2013 64位-VBA用户表单-将文本框的日期添加到28天,并显示在另一个文本框中_Excel_Vba_Userform_Date Arithmetic - Fatal编程技术网

Excel 2013 64位-VBA用户表单-将文本框的日期添加到28天,并显示在另一个文本框中

Excel 2013 64位-VBA用户表单-将文本框的日期添加到28天,并显示在另一个文本框中,excel,vba,userform,date-arithmetic,Excel,Vba,Userform,Date Arithmetic,在我的用户表单中,我有一个文本框“ADD_Inc_DATE_TXT”,用户手动输入事件日期 我有另一个文本框“TxT\u漩涡\u DueDate”,它应该显示在“ADD\u Inc\u date\u TxT”文本框中输入的日期加上28天的结果,甚至只需在事件日期加上1个月 我在一个名为“Mod_SWIRL_Due_Date”的模块中尝试过这一点: 但这似乎没有任何作用 选择“添加时间”文本框后,我希望“TxT\U漩涡\U DueDate”显示到期日期 预计用户会修改事件日期,我希望它用修改后的日

在我的用户表单中,我有一个文本框“ADD_Inc_DATE_TXT”,用户手动输入事件日期

我有另一个文本框“TxT\u漩涡\u DueDate”,它应该显示在“ADD\u Inc\u date\u TxT”文本框中输入的日期加上28天的结果,甚至只需在事件日期加上1个月

我在一个名为“Mod_SWIRL_Due_Date”的模块中尝试过这一点:

但这似乎没有任何作用

选择“添加时间”文本框后,我希望“TxT\U漩涡\U DueDate”显示到期日期

预计用户会修改事件日期,我希望它用修改后的日期更新TxT_SWIRL_DueDate


更多信息: 我在下面列出了所有与日期有关的代码。我有4个日期选择器/弹出日历。。。并且没有一个日期是以dd/mm/yyyy格式出现的。(将代码放入“代码示例”时遇到问题)


'在Private Sub UserForm_Initialize()下,我有以下与日期相关的代码: 私有子用户表单_初始化()


“***注意:我的系统日期为dd/mm/yyyy,在电子表格单元格中,格式设置为dd/mm/yyyy

在表单的代码模块中使用此代码(右键单击文本框“查看代码”):

我建议使用AfterUpdate事件,因为每次文本框中的值发生更改时都会触发更改事件,例如在键入时。这仅在用户完成键入并移动到表单上的下一个tiem(单击其他位置)时触发


也考虑使用某种形式的日期控件而不是Tabbox控件。有很多,根据您使用的Excel版本,您可能只能使用其中的一部分。

在表单的代码模块中使用此代码(右键单击文本框“查看代码”):

我建议使用AfterUpdate事件,因为每次文本框中的值发生更改时都会触发更改事件,例如在键入时。这仅在用户完成键入并移动到表单上的下一个tiem(单击其他位置)时触发


也考虑使用某种形式的日期控件而不是Tabbox控件。有很多,根据您使用的Excel版本,您可能只能使用其中的一部分。

非常感谢您的快速响应。抱歉,评论超时。当输入日期时,您的代码工作得非常好,除了一个小问题,出现的日期是美国格式,我希望它是dd/mm/yyyy格式。此外,我没有提到文本框由弹出式日历填充,这与您的代码不兼容。当我说用户手动输入日期时,我的意思是通过日期选择器(没有意识到这有什么不同)。你能解释一下“文本框以外的控件”是什么意思吗。无论我尝试了什么,我当前都遇到了日期选择器的日期格式问题…好的,对于输出格式,请更改文本框的格式(选择文本框、属性、格式,并键入带引号的
“dd/mm/yyyy”
)。至于另一个问题:弹出式日历必须有您可以使用的事件。那是控制吗?然后它必须有一个更改或更新事件。这是一个外部的小程序,它实际上把一个值写到一个文本框中吗?然后使用更新第一个文本框的相同过程来更新第二个文本框。这对你有意义吗?:)哇!你的电话接通了,哈哈,再次谢谢你。我已转到文本框的属性,但找不到名为“格式”的属性。我有Excel 2013版本,但在VBA属性列表中看不到它。。。我错过什么了吗?抱歉..非常感谢您的快速响应。抱歉评论超时。当输入日期时,您的代码工作得非常好,除了一个小问题,出现的日期是美国格式,我希望它是dd/mm/yyyy格式。此外,我没有提到文本框由弹出式日历填充,这与您的代码不兼容。当我说用户手动输入日期时,我的意思是通过日期选择器(没有意识到这有什么不同)。你能解释一下“文本框以外的控件”是什么意思吗。无论我尝试了什么,我当前都遇到了日期选择器的日期格式问题…好的,对于输出格式,请更改文本框的格式(选择文本框、属性、格式,并键入带引号的
“dd/mm/yyyy”
)。至于另一个问题:弹出式日历必须有您可以使用的事件。那是控制吗?然后它必须有一个更改或更新事件。这是一个外部的小程序,它实际上把一个值写到一个文本框中吗?然后使用更新第一个文本框的相同过程来更新第二个文本框。这对你有意义吗?:)哇!你的电话接通了,哈哈,再次谢谢你。我已转到文本框的属性,但找不到名为“格式”的属性。我有Excel 2013版本,但在VBA属性列表中看不到它。。。我错过什么了吗?很抱歉
Sub SWIRL_ExpiryDate()

    TxT_SWIRL_DueDate = CDate(ADD_Inc_DATE_TXT)

    ADD_Inc_DATE_TXT = DateAdd("m", 1, ADD_Inc_DATE_TXT)

End Sub
    Private Sub Calendar1_Click()
     ADD_Inc_DATE_TXT.value = CalendarForm.GetDate
     If IsDate(ADD_Inc_DATE_TXT.Text) Then
     Me.LBL_Inc_Day_Type.Caption = Format(ADD_Inc_DATE_TXT.Text, "ddd")

    End If
     If IsDate(ADD_Inc_DATE_TXT.Text) Then
     Me.ADD_Inc_DATE_TXT.Text = Format(ADD_Inc_DATE_TXT.Text, "dd/mm/yyyy") 
    End If
    End Sub

    Private Sub Calendar2_Click()
     TXT_AssetMgr_DATE = CalendarForm.GetDate
       If IsDate(ADD_Inc_DATE_TXT.Text) Then
        Me.TXT_AssetMgr_DATE.Text = Format(TXT_AssetMgr_DATE.Text, "dd/mm/yyyy")
    End If
    End Sub


    Private Sub Calendar3_Click()
     TXT_LastUserDATE = CalendarForm.GetDate
     If IsDate(ADD_Inc_DATE_TXT.Text) Then
     Me.TXT_LastUserDATE.Text = Format(TXT_LastUserDATE.Text, "dd/mm/yyyy")
    End If
    End Sub

    Private Sub Calendar4_Click()
      ADD_Date_ServiceJobLogged_TXT = CalendarForm.GetDate
      If IsDate(ADD_Inc_DATE_TXT.Text) Then
      Me.ADD_Date_ServiceJobLogged_TXT.Text =  Format(ADD_Date_ServiceJobLogged_TXT.Text, "dd/mm/yyyy")
     End If
     End Sub
            Me.ADD_Date_Recorded_TXT.value = Format(Now, "dd/mm/yyyy") ‘ this works perfectly (correct format is returned)
            Me.ADD_Time_Recorded_TXT.Text = Format(Now(), "HH:mm")
Private Sub ADD_Inc_DATE_TXT_AfterUpdate()
  TxT_SWIRL_DueDate.Value = Format(DateAdd("m", 1, CDate(ADD_Inc_DATE_TXT.Value)),"dd/mm/yyyy")
End Sub