我使用下面的代码在combobox(lstHomeroom)多选之间放置逗号分隔。然而,我的代码在列表的末尾给了我一个逗号。如何修改代码以删除结尾处的逗号?
**例如:**不想要:selection1,selection2,selection3,Want:选择1、选择2、选择3
Dim x As Long
Dim y As Long
Dim Homeroomselected As String
For y = 2 To x
'Update Homeroom
For Z = 0 To lstHomeroom.ListCount - 1
If lstHomeroom.Selected(Z) = True Then
Homeroomselected = Homeroomselected & lstHomeroom.List(Z) & ","
End If
Next Z
Sheets("Input").Cells(y, 4).Value = Homeroomselected
Next y
1条答案
按热度按时间n53p2ov01#
连接未知数量的字符串是一项常见的任务,包括分隔符(在本例中为逗号)。如果你有一个值数组,你可以使用函数
join
,但在你的情况下,这将不起作用,因为你没有一个数组,你只想添加选定的项目。基本上,有两种方法可以解决这个问题。
第一个是您当前在代码中所做的,始终附加分隔符,完成后,删除最后一个分隔符。这是@Tom在评论中提出的建议:
这有一个小问题:当没有选择任何内容时,您将获得一个运行时错误,因为字符串的Len为0,并且-1不是
Left
函数的有效参数。为了确保这一点,您需要检查:而且,如果你把分隔符改成
", "
,你需要记住,现在你需要删除2个字符。我也不太喜欢的是,字符串直到最后一刻都是无效的。您必须确保始终删除最后一个字符。假设你有一个循环来创建字符串,并决定由于什么原因你有足够的数据并想要退出(例如达到了最大长度或最大元素数)。您需要确保总是执行删除最后一个字符的语句,因此不能简单地发出
Exit Function
语句。第二种方法是检查我们是否需要逗号。由于我们无法提前知道是否要在稍后添加另一个元素,因此可以颠倒逻辑:在你写一个元素之前,检查是否已经有了一个元素。如果是,则在现有元素中添加逗号。
它可以用
IIf
-函数来写:或者,你可以创建一个小例程:
这样使用它: