Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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:如果我们知道字符串中第一个和最后一个字母的位置,如何提取子字符串_String_Excel_Vba - Fatal编程技术网

String Excel VBA:如果我们知道字符串中第一个和最后一个字母的位置,如何提取子字符串

String Excel VBA:如果我们知道字符串中第一个和最后一个字母的位置,如何提取子字符串,string,excel,vba,String,Excel,Vba,如果我们给出字符串中第一个字母和最后一个字母的位置,如何从字符串中提取子字符串 Dim my_string As String Dim my_substring As String my_string="Excel/Sheet1.xls" instrrev(我的字符串“/”给出6(起始位置) len(我的字符串)给出16(结束位置) 所以,要将“Sheet1.xls”作为我的子字符串,我们应该做什么 或者我们可以选择字符直到首先遇到“/”/这个怎么样 my_substring = Split(

如果我们给出字符串中第一个字母和最后一个字母的位置,如何从字符串中提取子字符串

Dim my_string As String
Dim my_substring As String
my_string="Excel/Sheet1.xls"
instrrev(我的字符串“/”
给出6(起始位置)

len(我的字符串)
给出16(结束位置)

所以,要将“Sheet1.xls”作为我的子字符串,我们应该做什么

或者我们可以选择字符直到首先遇到“/”/

这个怎么样

my_substring = Split("Excel/Sheet1.xls","/")(1)

会给你
Sheet1.xls

这个解决方案怎么样:

Dim strFileName As String
strFileName = ActiveWorkbook.Path & "/" & ActiveWorkbook.Name
Debug.Print "Start Position: " & Len(strFileName) - InStr(1, StrReverse(strFileName), "/")
Debug.Print "Extacted file name: " & Mid(strFileName, Len(strFileName) - InStr(1, StrReverse(strFileName), "/") + 2)

使用mid函数。参考:我认为你不会比伦敦罗布提供的答案做得更好。对类似的。但这涉及字符串的起始位置和结束位置。如果字符串中有多个
/
,则这不会达到您期望的效果。为什么不稍微修改一下,将
拆分
存储在一个
变量中,然后使用
UBound
获取最后一个元素?我可以建议这一点小小的改进:
拆分(strFileName,“/”)(UBound(拆分(strFileName,“/”))
拉尔夫,在这种情况下,我会考虑把数组放在一个变量中,这样分裂函数就不必执行两次。但是,我的建议对一个以上的人是不起作用的。甚至建议检查是否有任何……整洁的解决方案。我不知道有关
InStrRev
。我刚刚学到了一些新东西。谢谢
Dim strFileName As String
strFileName = ActiveWorkbook.Path & "/" & ActiveWorkbook.Name
Debug.Print "Start Position: " & Len(strFileName) - InStr(1, StrReverse(strFileName), "/")
Debug.Print "Extacted file name: " & Mid(strFileName, Len(strFileName) - InStr(1, StrReverse(strFileName), "/") + 2)