Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
String Excel VBA-删除字符串内容直至*word*_String_Vba_Excel - Fatal编程技术网

String Excel VBA-删除字符串内容直至*word*

String Excel VBA-删除字符串内容直至*word*,string,vba,excel,String,Vba,Excel,我试图删除字符串内容,直到字符串中包含的某个单词。比如说 "Emily has wild flowers. They are red and blue." 我想用VBA来代替它 "They are red and blue." i、 e.删除“他们”之前的所有内容。我不知道字符串内容和其中包含的字符数 我不知道该怎么做,我真的很感激你的帮助 给你: Dim s As String s = "Emily has wild flowers. They are red and blue." Di

我试图删除字符串内容,直到字符串中包含的某个单词。比如说

"Emily has wild flowers. They are red and blue."
我想用VBA来代替它

"They are red and blue."
i、 e.删除“他们”之前的所有内容。我不知道字符串内容和其中包含的字符数

我不知道该怎么做,我真的很感激你的帮助

给你:

Dim s As String
s = "Emily has wild flowers. They are red and blue."

Dim indexOfThey As Integer

indexOfThey = InStr(1, s, "They")


Dim finalString As String
finalString = Right(s, Len(s) - indexOfThey + 1)

在字符串中的值之前删除所有文本的简单示例

Sub Foo()
    Dim strOrig As String
    Dim strReplace As String
    strOrig = "The Quick brown fox jumped over the lazy dogs"
    strReplace = "jumped"

    MsgBox (DropTextBefore(strOrig, strReplace))

End Sub

Public Function DropTextBefore(strOrigin As String, strFind As String)
    Dim strOut As String
    Dim intFindPosition As Integer
    'case insensitive search
    'could made it so that case sensitivity is a parameter but this gets the idea across.
    If strOrigin <> "" And strFind <> "" Then
        intFindPosition = InStr(UCase(strOrigin), UCase(strFind))
        strOut = Right(strOrigin, Len(strOrigin) - (intFindPosition + Len(strFind) - 1))
    Else
      strOut = "Error Empty Parameter in function call was encountered."
    End If
    DropTextBefore = strOut
End Function
Sub-Foo()
以字符串的形式显示
变暗字符串替换为字符串
strOrig=“敏捷的棕色狐狸跳过了懒惰的狗”
strReplace=“跳过”
MsgBox(DropTextBefore(strOrig,strReplace))
端接头
公共函数DropTextBefore(strOrigin作为字符串,strFind作为字符串)
像弦一样的暗弦
Dim intFindPosition作为整数
'不区分大小写的搜索
“可以使它成为区分大小写的一个参数,但这让人明白了这一点。
如果strOrigin“”和strFind“”,则
intFindPosition=InStr(UCase(strOrigin),UCase(strFind))
strOut=右(strOrigin,Len(strOrigin)-(intFindPosition+Len(strFind)-1))
其他的
strOut=“函数调用中遇到错误空参数。”
如果结束
DropTextBefore=strOut
端函数

如果单词是固定的,如上面示例中的“他们”,您只需执行以下操作即可

  • CTRL+H(替换)
  • *他们(用星星表示你的话)
  • 在“查找”框中。星号*是一个通配符,可以称为-表示单词前后的任何内容(如果在末尾添加)


    小心:如果同一单元格中有重复的单词,请小心。

    这对我来说非常有用:

    Sub remove_until()
    
    Dim i, lrowA, remChar As Long
    Dim mString As String
    
    lrowA = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 1 To lrowA
    
    mString = Cells(i, 1).Value
    
    
        If InStr(mString, "They") > 0 Then
    
        remChar = Len(mString) - InStr(mString, "They") + 1
    
        Cells(i, 2).Value = Left(mString, Len(mString) - remChar)
    
        End If
    
    
    Next
    
    End Sub
    

    听着,我不知道为什么人们会因为这个给负面评价;我真的不知道如何编程,我真的需要帮助。作为一个对VBA相当陌生的人,如果我不能为此生成任何代码,为什么会很糟糕?这对那些没有像这里的大多数用户那样经验的人来说有点不公平。@jcv我被禁止提问,因为人们在没有给出原因或答案的情况下投了反对票。。。我知道你的想法pain@pnuts你们可能是对的,因为我的大多数问题都没有代码(问问题的方式是错误的),但一句关于为什么有人不高兴的评论可能会让这个人走上正确的方向。例如,这个问题:告诉他“发布你到目前为止所做的一切”比否决票要好,否决票并不能帮助他如何改进。谢谢,但我需要的应用程序更复杂,需要VBA驱动。为什么否决票?问题中哪里写的这是一个复杂且需要VBA驱动的策略…我很抱歉我猜“我想使用VBA”以及
    VBA
    excel VBA
    标记表示VBA,再加上您的方法是危险的,并且它没有解决“他们”之前的文本可能会更改的事实。它没有抓住问题的重点,不能安全地回答。哦,我的天哪……我应该正确地阅读这个问题……lessonI对此投了赞成票,因为我打算使用VBA来解决它,这个答案表明我过于复杂了。注意,你不需要计算字符串的长度
    finalString=Mid(s,indexOfThey)
    ,与Mid一样,长度是可选的这也将捕获部分单词。如果你在“我将采用算法”中搜索“go”,你将以“gorithm to go”结束。