InSTR或在VBA中查找功能

时间:2016-11-11 16:54:53

标签: excel vba excel-vba

我遇到了问题。我完成了我的研究,发现我可以使用InSTR函数来搜索字符串中的特定字符。

我要做的是获取从文件路径中提取的文件名。

目前我有

  InStr(StrFrom(pName), "\")

这里的问题是,它返回第一次出现的斜杠,其中我想得到斜杠的最后一次出现(这样我就可以使用围绕上面代码的'right'函数来捕获文件名)

如何获取字符串中的最后一个斜杠,我们对此有所帮助!

谢谢!

4 个答案:

答案 0 :(得分:8)

Instr从文本字符串的开头看,InstrRev从另一端开始查看。

Public Function FileNameOnly(ByVal FileNameAndPath As String) As String

    FileNameOnly = Mid(FileNameAndPath, InStrRev(FileNameAndPath, "\") + 1, Len(FileNameAndPath))

End Function

答案 1 :(得分:2)

使用InStrRev()从字符串的右侧查找第一次出现的斜杠。





https://msdn.microsoft.com/en-us/library/t2ekk41a(v = vs.90)的.aspx




答案 2 :(得分:2)

考虑:

Sub marine()
    Dim s As String, ary
    s = "C:\whatever\sub1\sub2\reallydeep\x.xlsm"
    ary = Split(s, "\")
    MsgBox ary(UBound(ary))
End Sub

enter image description here

答案 3 :(得分:1)

假设StrFrom是一些用户定义的函数,以下将执行您想要的操作:

Dim filename as String
Dim path as String

path = StrFrom(pName)
filename = Mid$(path, InstrRev(path, "\") + 1)

请注意,它更容易使用Mid $而不是Right $,因为InstrRev返回字符串左侧的字符位置。省略Mid $的最后一个参数,从该位置返回字符串的其余部分。