2016-06-21 181 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