2012-05-18 44 views
1

我有這樣一個變量:如何修剪或VBA分詞的變量名

var = "word1 (should be replaced by word1)" 

我需要通過自身得到WORD1,有時它可能是一個字或詞,但它總是有( *)之後。任何方法刪除()符號之間的文本,然後刪除(),然後刪除最後一個單詞後面的任何空格?

不知道有什麼辦法去做。

回答

1

最簡單的將是:

var = Trim(Mid(var, 1, InStr(var, "(") - 1)) 

InStr回報的「第一發生之索引(「。我減去1以折扣位置由「(」)持有。

Mid將字符串從位置1的第一個字符剪切到由InStr返回的索引。

然後Trim刪除尾隨空格。

+0

非常感謝,我用這個,它工作得很好! – MBlackburn

1

是否這樣?

Sub Sample() 
    Dim sVar As String 
    Dim MyAr() As String 

    sVar = "word1 (should be replaced by word1)" 

    MyAr = Split(sVar, "(") 

    Debug.Print MyAr(0) 
End Sub 

EDIT

上面的代碼可以進一步被縮短

Sub Sample() 
    Dim sVar As String 
    sVar = "word1 (should be replaced by word1)" 
    Debug.Print Split(sVar, "(")(0) 
End Sub 
+0

Ty再次成爲我的朋友! – MBlackburn

1

我會使用SPLIT函數。

arrayVar2 = split(var, "(") 

您現在將擁有一個包含2個元素的數組。

分裂的第二個元素

arrayVar3 = split(arrayVar2[1], ")") 

然後加入:

out = arrayVar2[0] & arrayVar3[1] 

只要有永遠只一組字符串中的括號內,將工作。

另一種方法是利用正則表達式庫,但這是一個較長的答案。它不會那麼高效,但如果需要處理更復雜的字符串會更好。


更新:我去了可能要求更多的問題。我的解決方案確保刪除方括號內的文本 - 方括號內的文本之後的任何文本也會保留。

+1

此方法已被建議;) –

+0

是的,我認爲我們都在同一時間寫我們的答案:)雖然挑剔,我會指出,我的答案稍微更完整,因爲它允許括號內的文本後的文本所以它刪除了被要求的括號內的文字。 ;) –

+0

沒有10分鐘的差異,但它是OK的:)關於代碼更完整,我會離開決定在你的手:)用戶只是想提取文本之前「(」;) –