在VBA上的用户表单之间传递多个条目

所以我想创build一个用户窗体。 我目前有两种forms,第一种是卡车的一般数据,一旦用户input了所有适当的文本框,第二个用户表单将显示并将数据传送到卡车信息标签上供参考。 (我弄明白了这个转移)

第一个用户表单

我希望用户能够为每个特定的/独特的预告片(通常具有多于一个的部分)添加多个零件号码和数量。 所以当用户点击“添加零件号”button时,它会在细节中添加一个新行,并将焦点返回到零件号combobox,就像我对第一个用户表单做的一样,以便它们可以在下一部分

第二种forms

这是我的第一个表单的代码

Private Sub UserForm1_Initialize() txtTrailerNum.SetFocus txtTrailerNum.Value = "" txtScacCode.Value = "" txtTruckNum.Value = "" txtSupNum.Value = "" txtInvoiceNum.Value = "" txtInvoiceType.Value = "" txtOrgRef.Value = "" End Sub Private Sub Clear_btn_Click() txtTrailerNum.Value = "" txtScacCode.Value = "" txtTruckNum.Value = "" txtSupNum.Value = "" txtInvoiceNum.Value = "" txtInvoiceType.Value = "" txtOrgRef.Value = "" End Sub Private Sub Enter_btn_Click() If txtTrailerNum.Text = "" Then MsgBox "Please Enter a valid Trailer Number." txtTrailerNum.SetFocus Exit Sub End If If txtScacCode.Text = "" Then MsgBox "Please Enter a valid SCAC Code." txtScacCode.SetFocus Exit Sub End If If txtTruckNum.Text = "" Then MsgBox "Please Enter a valid Truck Number." txtTruckNum.SetFocus Exit Sub End If If txtSupNum.Text = "" Then MsgBox "Please Enter a Supplier Number." txtSupNum.SetFocus Exit Sub End If If txtInvoiceNum.Text = "" Then MsgBox "Please Enter a valid Invoice Number." txtInvoiceNum.SetFocus Exit Sub End If If txtInvoiceType.Text = "" Then MsgBox "Please Enter a valid Invoice Number." txtInvoiceType.SetFocus Exit Sub End If If txtOrgRef.Text = "" Then MsgBox "Please Enter a valid Oiginator Reference." txtOrgRef.SetFocus Exit Sub End If UserForm2.Show End Sub 

这是我的第二个表单的代码

 Private Sub AddPrtNumbtn_Click() End Sub Private Sub PartNumcbo_AfterUpdate() On Error Resume Next txtPartDesc=Application.WorksheetFunction.VLookup(PartNumcbo.Value, Range("PartDesc"), 2, False) If Err.Number <> 0 Then MsgBox "Invalid Part Number" txtPartDesc.Value = "" End If On Error GoTo 0 End Sub Private Sub UserForm_Initialize() PartNumcbo.RowSource = "PartDescData!A:A" TruckInfolbl.Caption = "Trailer Num: " & UserForm1.txtTrailerNum.Value & " " & "SCAC Code: " & UserForm1.txtScacCode.Value & " " & "Truck Number: " & UserForm1.txtTruckNum.Value & " " & "Supplier Number: " & UserForm1.txtSupNum.Value & " " & "Invoice Number: " & UserForm1.txtInvoiceNum & " " & "Invoice Type: " & UserForm1.txtInvoiceType.Value & " " & "Originator Reference: " & UserForm1.txtOrgRef.Value End Sub 

理想情况下,表格完成后,零件号码将从第一个表格与卡车相关,然后input工作表范围。 所以如果用户点击第二个窗体底部的创build预告片button,这个button就会被input到工作表中。

我将如何去将数据从combobox和第二个用户窗体上的两个txtboxes传递到库存详细信息标签,然后将其input到范围内?

一种forms是父母和一个孩子 。 家长会参考孩子,并将创build它。 当孩子完成工作后,会收集收集到的所有数据。父母会订阅这个事件,所以会收到这些数据。

注意:@Cominternbuild议把所有的数据包装到一个类中并传递这个类的实例是合适的。

这里是一个例子,HTH。

父窗体

 Option Explicit Private WithEvents m_childForm As UserFormChild Private Sub CommandButton1_Click() Set m_childForm = New UserFormChild m_childForm.Show End Sub Private Sub m_childForm_ProcessData(ByVal comboBoxData As String, ByVal textBoxData1 As String, ByVal textBoxData2 As String) Me.TextBox1.Text = "Data: " & comboBoxData & ", " & textBoxData1 & ", " & textBoxData2 End Sub 

子窗体名为UserFormChild

 Option Explicit Public Event ProcessData(ByVal comboBoxData As String, ByVal textBoxData1 As String, ByVal textBoxData2 As String) Private Sub CommandButton1_Click() RaiseEvent ProcessData(Me.ComboBox1.Text, Me.TextBox1.Text, Me.TextBox2.Text) Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End Sub Private Sub UserForm_Initialize() Me.ComboBox1.AddItem "A" Me.ComboBox1.AddItem "B" Me.ComboBox1.AddItem "C" Me.ComboBox1.ListIndex = 1 End Sub 

在这里输入图像描述

在这里输入图像说明