Excel 2013 64位-VBA用户表单-将文本框的日期添加到28天,并显示在另一个文本框中
在我的用户表单中,我有一个文本框“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_DueDateExcel 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”显示到期日期 预计用户会修改事件日期,我希望它用修改后的日
更多信息: 我在下面列出了所有与日期有关的代码。我有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