集合的VBA联接等效项
如何在VBA中加入集合。在VB.net中,我通常使用联接(…,“分隔符”)联接数组,但我不知道如何使用VBA中的集合来联接数组集合的VBA联接等效项,vba,join,collections,excel,Vba,Join,Collections,Excel,如何在VBA中加入集合。在VB.net中,我通常使用联接(…,“分隔符”)联接数组,但我不知道如何使用VBA中的集合来联接数组 Dim oColl As New Collection Dim r As Range Set r = ThisWorkbook.Sheets("Work1").Range("D13:D263") For Each cell In r If IsEmpty(cell) Then Else oColl.Add ("a = ''"
Dim oColl As New Collection
Dim r As Range
Set r = ThisWorkbook.Sheets("Work1").Range("D13:D263")
For Each cell In r
If IsEmpty(cell) Then
Else
oColl.Add ("a = ''" + cell.Text + "'' ")
End If
Next
现在,我需要将所有集合值合并到一个字符串中。我解决了自己的问题,我简单地声明了一个字符串占位符,并在为集合中添加到字符串的每个项声明了一个占位符,然后输出单个字符串占位符的结果。解决问题后,您可以通过
SpecialCells
处理非空白单元格,而不是测试每个单元格Join
将最终的字符串合并在一起。如果没有字符串操作(a='''''+单元格.Text+''”
部分),则只需从步骤1开始加入特殊单元格范围即可
更新以处理SpecialCells集合中的多个区域和单个单元格(varinats不起作用的区域)
另一种方式:
joinedString = "a='" & Replace(Join(Application.Transpose(Sheet1.Range("D13:D263").Value), "',a='"), ",a=''", "")
你能发布你的集合的样本吗?我添加了示例集合+1以使用特殊的单元格,但我认为代码不会一直工作,你不能应用程序。如果有空格,转置一个非连续数组,那么rng1将是非连续的。@kyle很好的选择。我已经更新了这个和潜在的单单元格问题。顺便说一句,你知道吗事实上,如果它仍然在1?:)嗯,我想我有,现在肯定有:)这看起来很复杂,但我想它可以工作,我改变了我的代码,但我真的想使用集合,所以我可能会坚持使用集合。不管怎样,谢谢。我认为下面的是最简单的,我太简单了,想不出复杂的做事方法;)+我做得很聪明,使我的努力过度了。也许在最后修剪额外的值。荣誉
joinedString = "a='" & Replace(Join(Application.Transpose(Sheet1.Range("D13:D263").Value), "',a='"), ",a=''", "")