VBA用户窗体:多文本框填完后启用提交按钮的事件咨询
VBA UserForm:文本框填完才启用按钮的事件选择
嘿,这个需求很常见,你应该把检测逻辑放在每个TextBox的Change事件里,原因很简单:
UserForm_Initialize()只在窗体初始化时触发一次,没法实时响应用户在文本框里的输入、删除或修改操作;- 而TextBox的
Change事件会在用户每次修改文本框内容时触发,刚好能实时检查三个文本框是否都已填写完毕,进而控制按钮的启用状态。
具体实现思路
- 先写一个通用的检查函数,用来判断三个文本框是否都有有效内容,然后设置按钮的
Enabled属性:
Private Sub CheckTextBoxes() ' 用Trim排除仅输入空格的情况,判断三个TextBox内容非空 Me.CommandButton1.Enabled = _ (Trim(Me.TextBox1.Value) <> "") And _ (Trim(Me.TextBox2.Value) <> "") And _ (Trim(Me.TextBox3.Value) <> "") End Sub
- 给第二个Frame里的三个TextBox分别绑定
Change事件,调用上面的检查函数:
Private Sub TextBox1_Change() CheckTextBoxes End Sub Private Sub TextBox2_Change() CheckTextBoxes End Sub Private Sub TextBox3_Change() CheckTextBoxes End Sub
- 另外,在登录成功切换到第二个Frame的时候,记得初始把按钮设为禁用(此时文本框都是空的),比如在切换Frame的代码里加一行:
' 假设第二个Frame名为Frame2,按钮名为CommandButton1 Me.Frame2.Visible = True Me.CommandButton1.Enabled = False
这样不管用户怎么修改文本框内容,按钮都会实时同步状态——只有三个框都填了有效内容才会启用,否则保持禁用。
内容的提问来源于stack exchange,提问作者shakthivel sellapandiyan
相关产品推荐
相关产品推荐

