excel vba listbox变量类型错过匹配
问题描述:
我一直在努力一段时间,将列表框传递给子。经过3天的搜索......我需要帮助。我的最终目标是在一个列表框中选择项目,然后单击按钮并将它移动到另一个列表框。这是迄今为止我尝试过的。excel vba listbox变量类型错过匹配
在用户窗体:
Private Sub CommandButton7_Click()
Dim lbINDX As Integer
Dim lbSource As String, lbDest As String
lbINDX = ListBox3.ListIndex
lbSource = Me.ListBox3.Name
lbDest = Me.ListBox1.Name
Call move(lbINDX, lbSource, lbDest)
End Sub
在用户窗体子我也尝试:(无。名称)lbSource & lbDest作为对象,控制,列表框,和msforms.listbox
在模块:
Private Sub move(itm As Integer, objTarget As String, objDest As String)
txt = objTarget.ListIndex(itm).Text
UserForm10.Controls(objTarget).RemoveItem Item:=itm
UserForm10.Controls(objDest).AddItem txt
End Sub
在模块的子我也尝试:(有和没有Userform10.Controls())objTarget & objDest作为对象,控制,数组listB ox和msforms.listbox
如何通过变量传递整个列表框?还是有更简单的方法?
修订1响应Nathan_Sav:
Private Sub CommandButton7_Click()
Dim lbINDX As Long
Dim lbSource As MSForms.ListBox, lbDest As MSForms.ListBox
lbINDX = ListBox3.ListIndex
Set lbSource = Me.ListBox3
Set lbDest = Me.ListBox1
Call move(lbINDX, lbSource, lbDest)
End Sub
和
Private Sub move(lngIndex As Long, objSource As MSForms.ListBox, objDest As MSForms.ListBox)
objDest.AddItem objSource.ListIndex(lngIndex).Text
objSource.RemoveItem Item:=lngIndex
End Sub
答
我会做这样的,没有测试
Public Sub MoveEntry(cboSource As MSForms.ComboBox, cboDestination As MSForms.ComboBox, lngIndex As Long)
cboDestination.AddItem cboSource.ListIndex(lngIndex).Text
cboSource.RemoveItem Index:=lngIndex
End Sub
答
从Nathan_Sav一些帮助和另外一些修修补补之后我已经到了以下。尽管它满足了我的需要,但它并没有完成,因为它将值添加到目标列表框的底部,而不管有多少空白值(“”或null或其他值)。
在用户窗体
Private Sub CommandButton7_Click()
Dim lbINDX As Long
Dim lbSource As MSForms.ListBox, lbDest As MSForms.ListBox
lbINDX = ListBox3.ListIndex
Set lbSource = Me.ListBox3
Set lbDest = Me.ListBox1
Call Module1.MoveEntry(lbINDX, lbSource, lbDest)
End Sub
在模块 子MoveEntry(lngIndex只要,objSource作为MSForms.ListBox,objDest作为MSForms.ListBox) 昏暗TXT作为字符串
MsgBox objSource.Name
txt = objSource.Value
objDest.AddItem txt
objSource.RemoveItem lngIndex
End Sub
按照现在的情况我当时只允许一个价值转移。我怀疑,如果列表框是多选的,那就需要进一步修改。
非常感谢Nathan的帮助。
如果有人可以请解释为什么这个工作,但其他的尝试没有请发表回答,所以我可以使它作为回答。
Appologies,我忽略了一个关键部分。我在“呼叫移动(lbINDX,lbSource,lbDest) – gde211
第一个变种,itm需要很长时出现”类型不匹配“错误https://msdn.microsoft.com/en-us/library/office/ff193579.aspx它也需要像索引:= itm –
@Nathan_Sav得到'长'部分,虽然我不知道为什么,但'像索引:= itm'扔我离开。这将去哪里?在模块或用户表单子? – gde211