InSTR或VBA中查找function

我陷入了一个问题。 我已经完成了我的研究,发现我可以使用InSTR函数来searchstring中的特定字符。

我想要做的是从文件path中提取文件名。

目前我有

InStr(StrFrom(pName), "\") 

这里的问题是,它返回斜杠的第一次出现,因为我想要得到斜线的最后一次出现(以便我可以使用一个'右'function包裹上述代码捕获文件名)

任何帮助赞赏如何获得最后的斜线string!

谢谢!

Instr从文本string开头看, InstrRev从另一端开始查找。

 Public Function FileNameOnly(ByVal FileNameAndPath As String) As String FileNameOnly = Mid(FileNameAndPath, InStrRev(FileNameAndPath, "\") + 1, Len(FileNameAndPath)) End Function 

使用InStrRev()从string的右侧查找斜杠的第一个匹配项。

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

考虑:

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

在这里输入图像描述

假设StrFrom是一些用户定义的函数,下面将做你想要的:

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

请注意,它比Mid $更容易使用,因为InstrRev返回string左边的字符位置。 省略Mid $的最后一个参数,将从该位置返回string的其余部分。