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
,都可以引用不同的用户表单
例如,我有两个userformsUserForm1
和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