在我的Excel VBA用户表单上有一个文本框,用户应该以{{1}}格式输入日期。如果输入为dd-mm-yy
,则应将其更新为09-22-13
。此文本框的ControlSource属性设置为单元格的地址;该单元格的值也应该变为22-09-2013
。
我尝试过的所有事件处理程序的问题是ControlSource的值在触发处理程序之前得到更新,除非我对其地址进行硬编码,否则我无法更改ControlSource的值(这是我想要避免的)
你可以帮忙吗?感谢。22-09-2013
答案 0 :(得分:2)
此处需要考虑的事项,controlsource update
和event order
似乎无法更改,因此您可能会尝试在worksheet_change
之前添加textbox event
事件在textbox event
存在之前..
答案 1 :(得分:0)
Private Function GetCtrlSourceStr$()
On Error Resume Next
GetCtrlSourceStr = wCtrl.ControlSource
End Function
' '如果已卸载Form,则通过编辑工作表更改Sheet FoFiCriteria中的值 '表单文本框或复选框将不会链接到这些更改.. '表单显示或隐藏仍将与其控件源同步 '表单打开时工作,但FoFiCriteria不是活动表 '这些ControlSource字符串需要为,SHeetName!B14 .. FoFiCriteria!L9 '来自 ' RaAdd = ra(3,Ci).Address(False,False,,True) ' .ControlSource = Mid(RaAdd,InStr(RaAdd,"]")+ 1)
'因此,对表单进行编辑应链接到其工作表上的控件源范围 '所以我们需要 '
Sub ReGetCtrlSources()
For Each wCtrl In frd.Controls
If GetCtrlSourceStr <> "" Then
wCtrl.Value = Range(wCtrl.ControlSource).Value
wCtrl.BackColor = Range(wCtrl.ControlSource).Interior.Color
End If
Next wCtrl
End Sub
&#39;添加激活 Private Sub UserForm_Activate()
ReGetCtrlSources
End Sub