在我的Excel VBA用户表单上有一个文本框,用户应该以 dd-mm-yy
格式输入日期 . 如果输入为 09-22-13
,则应更新为 22-09-2013
. 此文本框的ControlSource属性设置为单元格的地址;这个单元格的值也应该变成 22-09-2013
.
我尝试的所有事件处理程序的问题是ControlSource的值在触发处理程序之前得到更新,除非我对其地址进行硬编码,否则我无法更改ControlSource的值(这是我想要避免的) .
你能帮忙吗?谢谢 .
Private Sub TextBox_MyDate_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
TextBox_MynDate.Value = Format(TextBox_MyDate.Value, "dd/mm/yyyy")
' TextBox_MyDate.ControlSource.Value = TextBox_MyDate.Value does not compile
DoEvents
End Sub
2 回答
这里要考虑的事情,
controlsource update
和event order
似乎无法改变,所以你可以尝试在textbox event
之前添加worksheet_change
事件,因为前者在textbox event
存在之前发生..Reference:
''如果Form被卸载并且Sheet FoFiCriteria中的值通过编辑工作表而改变'表单Textboxes或Checkboxes将不会链接到这些更改..'表单显示或隐藏仍将与其控件源同步'以便工作时表单已打开,但FoFiCriteria不是活动表单'这些ControlSource字符串需要为,SHeetName!B14 .. FoFiCriteria!L9'来自'RaAdd = ra(3,Ci).Address(False,False,,True) '.ControlSource = Mid(RaAdd,InStr(RaAdd,“]”)1)
'所以在表格上的编辑应该链接到其表格上的控制源范围'所以我们需要'
结束子
'添加以激活Private Sub UserForm_Activate()