好的,我正在努力实现:我有一个用户表单,询问用户需要处理多少新订单。我将用户输入设置为此代码中的变量(不确定它是否做任何事情)。
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上。
答案 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)
或者,您可以在代码模块中使用公共变量。