2016-06-21 96 views
1

在C#中,你可以做这样的事情:VBA String.Split删除空项

string s = "1--2--3"; 
s.Split(new char[] {'-'}, StringSplitOptions.RemoveEmptyEntries); 

和而不是让{1,2,3},你会得到{1,2, 3}

我想在VBA中做同样的事情,但我没有看到一个StringSplitOptions.RemoveEmptyEntries。最简单的方法是什么?

+2

没有什么内置的VBA。你必须推出你自己的或者使用一些第三方代码([example](http://www.cpearson.com/excel/Split.aspx))。 – Heinzi

+0

使用VBA的“Split”函数来读取数组中的'-'分隔条目。遍历数组并删除空项目。 – cyboashu

回答

0

在VBA中没有简单的方法,但删除每一个。

Public Function SplitRemoveEmptyEntries(strInput As String, strDelimiter As String) As String() 
Dim strTmp As Variant 
Dim sSplit() As String 
Dim sSplitOut() As String 
ReDim Preserve sSplitOut(0) 
    For Each strTmp In Split(strInput, strDelimiter) 
    If Trim(strTmp) <> "" Then 
     ReDim Preserve sSplitOut(UBound(sSplitOut) + 1) 
     sSplitOut(UBound(sSplitOut) - 1) = strTmp 
    End If 
    Next strTmp 
    ReDim Preserve sSplitOut(UBound(sSplitOut) - 1) 
    SplitRemoveEmptyEntries = sSplitOut 
End Function 
0

使用您的具体实例的硬编码的例子 - 不会三重项工作

Dim arrSplit as Variant 
Dim strExample as String 
Dim i as Integer 

strExample = "1--2--3" 

arrSplit = Split(Replace(strExample,"--","),"-") ' Replace double delimiters 
for i = lBound(arrSplit) to uBound(arrSplit) 
    Debug.Print arrSplit(i) 
next