2014-09-26 834 views
0

让我开始说我已经使用了VBA约2小时。
我是一个Java人,对VBA一无所知。VBA将单元格的范围传递到函数中

我要的是写一个Excel函数,将采取单元格区域的和分隔符作为参数,然后返回这些细胞的串联与指定的分隔符。

示例 concatenateRange(B1:D1,“;”)会返回等价的= B1 &“;” & C1 &“;” & D1

这里是我的代码(不工作)

Function concatenateRange(rng As Range, delimiter As String) 

    str = "" 
    For Each cell In rng 
     str = str & delimiter & cell 
    Next 

    concatenateRange = str 

End Function 

我得到的,当我尝试使用上述功能的错误是“参数不可选”

+0

@johnzilla已经给出了一个答案,我同意*海峡*是一个内置的* VBA功能*,但你可以[检查了这一点(http://stackoverflow.com/questions/25628511/exel-concatenate-many-columns/25635231#25635231)。这提出了各种获得你想要完成的方法。 – L42 2014-09-26 21:46:43

回答

1

你定义的变量打包内置的VBA函数Str()。 VBA不喜欢这个。

这工作得很好:

Public Function concatenateRange(rng As Range, delimiter As String) 

    Str1 = "" 
    For Each cell In rng 
     Str1 = Str1 & delimiter & cell 
    Next 

    concatenateRange = Str1 

End Function 
+0

但是你一开始就会得到一个额外的分隔符 – 2014-09-26 21:26:03

相关问题