0

好的,我想要完成的是:我有一个用户表单,询问用户需要处理多少新订单。我在这段代码中将用户输入设置为一个变量(不确定它是否有任何作用)。

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

End Sub

然后当 UserForm2 弹出时,我希望能够输入更多数据以及有关订单的更具体信息。因此,如果在 UserForm1 上我输入了 3,我希望必须将新数据提交到 UserForm2 3 次不同的时间。我尝试使用 For - Next 循环(如下),但它不起作用。我不确定如何(或是否)可以在用户窗体之间存储类似的变量。

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 (默认)开头,但它们位于不同的用户窗体上。

4

1 回答 1

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)

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

于 2013-07-17T14:07:03.957 回答