有没有办法将用户表单的输入值(文本框)用作另一个用户表单的变量?

时间:2013-07-17 13:25:44

标签: vba variables textbox

好的,我正在努力实现:我有一个用户表单,询问用户需要处理多少新订单。我将用户输入设置为此代码中的变量(不确定它是否做任何事情)。

Private Sub CommandButton1_Click()
UserForm2.Show
    OrderNum.Text = NewOrders
'I changed the textbox name to OrderNum

End Sub

然后当UserForm2弹出时,我希望能够输入更多有关订单的更具体信息的数据。因此,如果我在3中输入的Userform1,我想要在3个不同的时间向UserForm2提交新数据。我尝试使用For - Next循环(下面),但它不起作用。我不确定如何(或者如果)我可以在Userforms之间存储类似的变量。

Private Sub CommandButton1_Click()

Dim lRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Core Info")
OrderNum.Text = NewOrders
lRow = ws.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row

For i = 1 To NewOrders

ws.Cells(lRow, 1).Value = TextBox1.Text
ws.Cells(lRow, 3).Value = TextBox2.Text

Next i

UserForm2.Hide

End Sub

第二个用户窗体应该弹出,但之后没有任何工作。谁能告诉我我能做些什么来解决这个问题?

注意:我意识到上述内容以CommandButton1(默认)开头,但它们位于不同的Userforms上。

1 个答案:

答案 0 :(得分:0)

为表单控件提供更容易识别的名称,而不是模糊的CommandButton1命名法,这将是有用的(并且是良好的编码实践)。将CommandButton1上的UserForm1名称修改为Form1_SubmitButton。然后,使用此代码处理表单提交。

Sub Form1_SubmitButton_Click()
' a textbox control named OrderNum on UserForm1 has captured the value
'Assign the value from the OrderNum textbox to a named variable in the worksheet
ActiveWorkbook.Names.Add "OrderNum", Me.OrderNum.Text

UserForm2.Show


End Sub

然后,在UserForm2中将命令按钮的名称更改为Form2_SubmitButton,并使用以下代码:

Sub Form2_SubmitButton_Click()
Dim orderNum as Long
orderNum = Replace(ActiveWorkbook.Names("OrderNum").Value,"=",vbNullString)

'the rest of your code goes here.

End Sub

因此,我们上面所做的是在工作表中创建一个Name,其中包含您要在多个表单上使用的值。您始终可以通过Replace(ActiveWorkbook.Names("OrderNum").Value,"=",vbNullString)

获取此值

或者,您可以在代码模块中使用公共变量。