VBA窗体.show以后,首次会进行初始化
即会运行过程:Private Sub UserForm_Initialize()
此时窗体被载入内存,此后重复进行窗体.show操作,因窗体已经被载入内存
所以不会再初始化,解决的办法是unload卸载,即:
Sub 新增员工()
strStatus = ""
Unload frmNew
frmNew.Show
Sheets("主界面").Activate
End Sub
Sub 新增员工()
strStatus = ""
Unload frmNew
frmNew.Show
Sheets("主界面").Activate
End Sub
附窗体生命周期:
用户窗体装载和卸载的顺序是:装载(Load)—显示(Show)—隐藏(Hide)—卸载(Unload)。卸载会清除用户窗体模块中的所有的变量——类似于停止了一个过程。用户已经输入的任何数值都将丟失,控件将恢复为属性窗口中输入的缺省值。如果想保存它们的值,则需要在卸载用户窗体前进行保存。由此可以看出装载(Load)及卸载(Unload)间(含)的时间就是一个窗体的生命周期。
以下为全选字符
Private Sub txtBirthday_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(txtBirthday.Value) Then
MsgBox "请输入正确的出生年月", , "提示"
txtBirthday.SelStart = 0
txtBirthday.SelLength = Len(txtBirthday.Value)
Cancel = True
End If
End Sub