Excel VBA将选择项从列表框移动到另一个弹出用户表单中的不同表单中的列表框

Excel VBA将选择项从列表框移动到另一个弹出用户表单中的不同表单中的列表框,excel,userform,vba,Excel,Userform,Vba,我有一个工作簿,它有一个列表框,人们可以选择多行。我想在选择后将该信息以新的形式放到另一个列表框中,该列表框将在选择后弹出 我找到了在同一用户表单中的列表框之间传输的示例,但我需要帮助在不同表单之间移动它们 此代码显示如何在同一表单上的两个用户表单之间传递信息。但我需要修改它,将其在两种不同的形式之间移动。就像你点击一个提交按钮,另一个带有文本框的列表框弹出 Option Explicit 'Move Listbox Items in UserForm 'code from Dave Peter

我有一个工作簿,它有一个列表框,人们可以选择多行。我想在选择后将该信息以新的形式放到另一个列表框中,该列表框将在选择后弹出

我找到了在同一用户表单中的列表框之间传输的示例,但我需要帮助在不同表单之间移动它们

此代码显示如何在同一表单上的两个用户表单之间传递信息。但我需要修改它,将其在两种不同的形式之间移动。就像你点击一个提交按钮,另一个带有文本框的列表框弹出

Option Explicit
'Move Listbox Items in UserForm
'code from Dave Peterson
'posted on www.contextures.com


    Private Sub BTN_moveAllLeft_Click()

    Dim iCtr As Long

    For iCtr = 0 To Me.ListBox2.ListCount - 1
        Me.ListBox1.AddItem Me.ListBox2.List(iCtr)
    Next iCtr

    Me.ListBox2.Clear
End Sub


Private Sub BTN_moveAllRight_Click()

Dim iCtr As Long

For iCtr = 0 To Me.ListBox1.ListCount - 1
    Me.ListBox2.AddItem Me.ListBox1.List(iCtr)
Next iCtr

Me.ListBox1.Clear
End Sub


Private Sub BTN_MoveSelectedLeft_Click()

Dim iCtr As Long

For iCtr = 0 To Me.ListBox2.ListCount - 1
    If Me.ListBox2.Selected(iCtr) = True Then
        Me.ListBox1.AddItem Me.ListBox2.List(iCtr)
    End If
Next iCtr

For iCtr = Me.ListBox2.ListCount - 1 To 0 Step -1
    If Me.ListBox2.Selected(iCtr) = True Then
        Me.ListBox2.RemoveItem iCtr
    End If
Next iCtr

End Sub


Private Sub BTN_MoveSelectedRight_Click()

Dim iCtr As Long

For iCtr = 0 To Me.ListBox1.ListCount - 1
    If Me.ListBox1.Selected(iCtr) = True Then
        Me.ListBox2.AddItem Me.ListBox1.List(iCtr)
    End If
Next iCtr

For iCtr = Me.ListBox1.ListCount - 1 To 0 Step -1
    If Me.ListBox1.Selected(iCtr) = True Then
        Me.ListBox1.RemoveItem iCtr
    End If
Next iCtr

End Sub

Private Sub cmdOK_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()

Dim iCtr As Long

With Me.ListBox1
    For iCtr = 1 To 10
        .AddItem "This is a test" & iCtr
    Next iCtr
End With

With Me.ListBox2
    For iCtr = 1 To 10
        .AddItem "This is a not a test" & iCtr
    Next iCtr
End With

Me.ListBox1.MultiSelect = fmMultiSelectMulti
Me.ListBox2.MultiSelect = fmMultiSelectMulti

End Sub

无论您在哪里看到
Me
,都可以引用不同的用户表单

例如,我有两个userforms
UserForm1
UserForm2
。假设我们的初始列表框,
ListBox1
位于
UserForm1
上,并包含一个颜色列表
UserForm1
还包含一个命令按钮,
CommandButton1
,它将所选项目从
UserForm1
移动到
UserForm2
中的另一个列表框(也称为
ListBox1
)到下一个表单

UserForm1
中的代码,显示的初始形式,命令按钮上的代码如下所示:

Private Sub CommandButton1_Click()

    Dim i As Integer

    For i = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(i) = True Then
            UserForm2.ListBox1.AddItem Me.ListBox1.List(i)
        End If
    Next i

    UserForm2.Show


End Sub