Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VBA word中修剪或拆分变量名_Vba_Trim_Ms Word - Fatal编程技术网

如何在VBA word中修剪或拆分变量名

如何在VBA word中修剪或拆分变量名,vba,trim,ms-word,Vba,Trim,Ms Word,我有这样一个变量: var = "word1 (should be replaced by word1)" 我需要得到单词1本身,有时它可能是一个单词,但它后面总是有(*)。有没有办法删除()符号之间的文本,然后删除(),然后删除最后一个单词后面的空格 我不知道该怎么办。像这样吗 Sub Sample() Dim sVar As String Dim MyAr() As String sVar = "word1 (should be replaced by word1

我有这样一个变量:

var = "word1 (should be replaced by word1)"
我需要得到单词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
编辑

上述代码可以进一步缩短

Sub Sample()
    Dim sVar As String
    sVar = "word1 (should be replaced by word1)"
    Debug.Print Split(sVar, "(")(0)
End Sub
最简单的方法是:

var = Trim(Mid(var, 1, InStr(var, "(") - 1))
InStr
返回“(”的第一次出现的索引。我减去1以贴现“(”持有的头寸

Mid
将字符串从位置1的第一个字符剪切到
InStr
返回的索引


然后
Trim
删除尾随空格。

我将使用SPLIT函数

arrayVar2 = split(var, "(" )
现在将有一个包含2个元素的数组

拆分第二个元素

arrayVar3 = split( arrayVar2[1], ")" )
然后加入:

out = arrayVar2[0] & arrayVar3[1]
只要字符串中只有一组括号,这就行了

另一种方法是使用正则表达式库,但这是一个较长的答案。虽然效率不高,但如果需要处理更复杂的字符串,效果会更好



更新:我的回答比可能需要回答的问题更进一步。我的解决方案确保删除括号内的文本-括号内文本之后的任何文本也将保留。

是的,我想我们两人同时写下了答案:)虽然我很挑剔,但我还是要指出,我的答案稍微完整一些,因为它允许在括号内的文本之后添加文本,因此它删除了括号内的文本,这就是要求的内容。;)没有10分钟的差异,但也可以:)关于代码更完整,我将把决定权留给您:)用户只想提取“(”;)之前的文本