问题描述
遇到一个问题,我想从一个列表框中选择一个文本并将该文本添加到另一个列表框中。该错误似乎仅在文本中包含“'”且 VBA 似乎拆分文本并将剩余文本添加到下一列时才会发生。另外,我正在处理列表框中的列,我的代码应该从左到右添加每个文本。这很好,但我需要整个文本(包括“.”)而不是拆分文本。
Private Sub btnAddUser_Click()
Dim SelectUser,ItemString1,ItemString2 As String,ItemString3 As String
For Each SelectUser In lstusers.ItemsSelected
Debug.Print lstusers.Column(0,SelectUser)
Debug.Print lstusers.Column(1,SelectUser)
Debug.Print lstusers.Column(2,SelectUser)
ItemString1 = lstusers.Column(0,SelectUser)
ItemString2 = lstusers.Column(1,SelectUser)
ItemString3 = lstusers.Column(2,SelectUser)
Form_frmAS.lstAddedUsers.AddItem ItemString1,0
Form_frmAS.lstAddedUsers.AddItem ItemString2,1
Form_frmAS.lstAddedUsers.AddItem ItemString3,2
Form_frmAS.lstAddedUsers.Requery
Next SelectUser
End Sub
有没有办法让它发挥作用,还是我需要找到解决方法?
非常感谢
解决方法
在ListBox.AddItem method中,第二个参数是列表中的位置,即行号而不是列号。不能一一添加列。
要使其工作,将第二个ListBox的Row Source Type设置为Value List并将代码更改为
For Each SelectUser In lstusers.ItemsSelected
lstAddedUsers.AddItem lstusers.Column(0,SelectUser) & ";" _
& lstusers.Column(1,SelectUser) & ";" _
& lstusers.Column(2,SelectUser)
Next
如果您没有在 AddItem
中指定第二个参数,新项目将自动附加到列表的末尾。