我试图找出如何让excel用户表单中的文本框像HTML文本框一样更新。例如,如果您将默认值设置为“First Name”并单击该文本框,它将消失并让您输入。一旦您单击,如果您没有键入任何内容,它将返回到默认“名字”。
我发现很多人都在询问这种类型的东西,但没有一个对我有用。到目前为止,这是我的代码。
Sub QCToolsForm()
QCTools.Show vbModeless
End Sub
Private Sub RUBSTotalExpense_Enter()
Debug.Print "Enter"
If Me.RUBSTotalExpense.Value = "Total Expense" Then
Me.RUBSTotalExpense.Value = ""
End If
End Sub
Private Sub RUBSTotalExpense_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Debug.Print "Exit"
If Me.RUBSTotalExpense.Value = "" Then
Me.RUBSTotalExpense.Value = "Total Expense"
End If
End Sub
Private Sub UserForm_Initialize()
updateDefault
End Sub
Public Function updateDefault()
If Me.RUBSTotalExpense.Value = "" Then
Me.RUBSTotalExpense.Value = "Total Expense"
End If
End Function
在关闭userform之前,exit子程序没有运行。我也尝试过失败和聚焦,但根本没有运气。我之前和之后都尝试过,但他们只是第一次工作。如果值为“Total Expense”,我希望每次单击框中都会消失。当我离开文本框时,如何获得exit sub或类似的东西?
答案 0 :(得分:1)
我尝试将您的代码用于Enter和Exit,它为我提供了测试用户表单。它正确地更新字段,并在选择文本框时打印“Enter”,在用户窗体上选择其他内容时打印“退出”。请注意,要触发退出,您需要将焦点放在userform上的其他内容上。只需单击其他位置就不会从文本框中获取焦点,您必须单击另一个文本框或其他控件。
我建议使用Debug.Print准确观察您尝试的每个方法的确切时间,这样您就可以确定代码的运行时间。
Private Sub TextBox1_Enter()
Debug.Print "Enter"
If TextBox1.Value = "Total Expense" Then
TextBox1.Value = ""
End If
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Debug.Print "Exit"
If TextBox1.Value = "" Then
TextBox1.Value = "Total Expense"
End If
End Sub