VBA仅将单元格值保留在空格之前

VBA仅将单元格值保留在空格之前,vba,excel,Vba,Excel,这似乎是一个简单的代码,但我在网上的任何地方都找不到它&我不知道如何编写它 我想做的是,比方说,单元格范围A1的值为Hey-ho-he-ha。 我想让代码做的是删除第一个空格后单词的其余部分,这样剩下的就只有Hey了 谢谢 Sub extract() Dim myString As String, lung As Integer, i As Integer, pos As Integer myString = Range("A1").value lung = Len(myString) Fo

这似乎是一个简单的代码,但我在网上的任何地方都找不到它&我不知道如何编写它

我想做的是,比方说,单元格范围A1的值为Hey-ho-he-ha。 我想让代码做的是删除第一个空格后单词的其余部分,这样剩下的就只有Hey了

谢谢

Sub extract()

Dim myString As String, lung As Integer, i As Integer, pos As Integer
myString = Range("A1").value
lung = Len(myString)

For i = 1 To lung
    pos = InStr(i, myString, " ")
    If pos <> 0 Then
        Exit For
    End If
Next i
Range("A1").value = Mid(myString, 1, pos)

End Sub
循环遍历单元格中的值,并在文本中找到第一个空格时退出。在找到的空格前提取文本并将其复制到单元格中。

单行代码

RangeA1.Value=SplitRangeA1.Value,0

另一个基于IolandaAB答案的单行代码

如果InStr1,RangeA1.Value,那么RangeA1.Value=MidRangeA1.Value,1,InStr1,RangeA1.Value,-1

还有一行代码

如果InStr1,RangeA1.Value,则RangeA1.Value=LeftRangeA1.Value,InStr1,RangeA1.Value,-1


随便挑:我最喜欢的还是第一个。

我对vba一无所知,但我认为这有助于函数返回所有值,只需拆分即可。谢谢,顺便说一句!你甚至不需要那个条件。您只需执行RangeA1.Value=SplitRangeA1.Value,0;是的。你是对的。这就是罗恩的建议