此用户窗体用于一个称为“工作信息”的特定工作表。该用户窗体具有多个文本框和命令按钮。 “添加”按钮将数据传递到活动工作表上的特定范围(总是“作业信息”)。
现实世界场景:
用户打开用户窗体以将数据键入相应的文本框(例如,工作地点和工作日),然后按ADD CommandButton添加新数据。当天晚些时候,用户返回仅添加或更新一个TextBoxes(例如Department),而所有其他TextBoxes则保持空白。不幸的是,在编写代码时,空的文本框将空白传递给“作业站点”和“周结束日期”。
询问
想要一种在传递数据之前检查每个TextBox中的值的解决方案,如果TextBox中没有值,则不传递任何值。
Private Sub cmdCommandButton1_Click()
ActiveSheet.Unprotect Password:="password"
''Here I would like code that checks for value in each TextBox.
''If TextBox1 = True then pass value to specified range
''If TextBox1 = False then do not pass
''Below is current code for passing value when CommandButton1_Click()
Range("H3") = txtTextBox1.Value
Range("L2") = txtTextBox2.Value
Range("K2") = txtTextBox3.Value
Range("J2") = txtTextBox4.Value
Range("O2") = txtTextBox5.Value
'' This code resets TextBoxes to 0 before ending sub
txtTextBox1.Text = ""
txtTextBox2.Text = ""
txtTextBox3.Text = ""
txtTextBox4.Text = ""
txtTextBox5.Text = ""
ActiveSheet.Protect
End Sub
答案 0 :(得分:0)
有几种方法可以实现您的目标,但这是一种不需要我提出任何问题的方法。
Private Sub CommandButton2_Click()
If Me.TextBox1.Text <> "" Then
Sheets("Sheet1").Range("A1").Value = Me.TextBox1.Text
End If
End Sub
基本上,在上面的测试代码中,当单击CommandButton2
时,VBA将检查TextBox1
上的UserForm1
(我将Me
称为代码写在UserForm模块中)不等于""
(空白字符串)。
换句话说,它正在检查TextBox
是否包含至少一个字符。如果确实包含至少一个字符,则会将TextBox1.Text
写入工作表A1
上的单元格Sheet1
。如果TextBox
为空,则什么也不会发生。
您可以为If
上的每个TextBox
重复此UserForm
语句(不要忘记为每个If
语句更新任何控件和工作表引用! )