我有2个用户表单,Userform_1包含许多TextBoxes(TextBox1,TextBox2,TextBox3,.....)&在Userform_2中我有1个TextBox,用户可以在其中输入值。现在,我需要在Userform_1中传递用户输入的值,以便在Userform_1中显示/存储在其各自的触发TextBox事件中。因此,当用户想要传入TextBox3(Userform_1)时,他/她将只使用double_click触发器(激活Userform_2)&传递值应仅存储在TextBox3中。
我试过了:
在Userform_1
中Private Sub TextBox3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
UserForm2.Show
End Sub
在Userform_2
中Private Sub CommandButton1_Click()
On Error Resume Next
If UserForm1.TextBox1.Value = "" Then UserForm1.TextBox1.Value = ComboBox1.Value
If UserForm1.TextBox2.Value = "" Then UserForm1.TextBox2.Value = ComboBox1.Value
If UserForm1.TextBox3.Value = "" Then UserForm1.TextBox3.Value = ComboBox1.Value
Unload Me
End Sub
问题是它会在任何TextBox中显示输入的值,这是空的&不是特别在TextBox3中。任何见解都会有所帮助。
答案 0 :(得分:0)
您的代码完全按照您要求它执行的操作(而不是您希望它执行的操作)。根据您的描述,我提供以下内容(未经测试)。
在Userform_1
中Private Sub TextBox3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
UserForm2.Show
TextBox3.Value = UserForm2.ComboBox1.Value
End Sub
在Userform_2
中Private Sub CommandButton1_Click()
Me.Hide
'Note not unloading, this means that the userform is still in memory and you can access the values after it is hidden.
' Also, hiding the form will return control back to the UserForm1 for further processing.
End Sub
并且避免使用On Error
,尤其是On Error Resume Next
,您所做的只是隐藏错误,而不是处理错误。如果您可以预期您的代码会导致错误,请在该代码之前处理它。
答案 1 :(得分:0)
谢谢ADJ ...... 您的概念很好,但它并不能完全满足要求,只是隐藏Userform不会删除/清除下次输入的输入值&再次重新打开它会显示最后输入的值。我可以写一个代码来删除它,但后来我有太多的文本框。 我使用了你的概念,只从特定的TextBox中调用所需的Userform ......
写下面的代码,符合我的要求:
UserForm_1: 在UserForm_2中为标识符
创建了隐藏的TextBox1UserForm2.TextBox1.Value = "<random identifier value>"
UserForm_2:
If TextBox1.Value = "<random identifier value>" Then
UserForm1.TextBox3.Value = "<User Input>"
End If
所以这样我就可以分配&amp;仅调用已识别的TextBox。