VBA InStrRev()函数 返回搜索到的字符位置 - VBA函数学习笔记(四)

上一篇文章已经学习了Instr()函数,InStrRev()函数正好与Instr()函数相反,查找的方向是相反的。Instr()的查找方向是从左到右,而 InStrRev()函数的方向是从右到左。

语法

InStrRev(string1, string2 [,start, [compare]])

参数

string1 - 必须的参数,要匹配的字符串;

string2 - 必须的参数,string2在string1中查询,在哪个字符串中查询;

start - 可选参数。查询的起始位置;

compare - 可选的参数,有两个值。0 = vbBinaryCompare - 执行二进制比较(默认),1 = vbTextCompare - 执行文本比较;

说明

这里要注意一下string1和string2的这两个参数,string1表示需要被匹配的字符串,而string2表示的是查询字符串,即string1要在string2中查找。这两个参数的顺序和Instr相反,不得不说很坑了。另外start也是,start表示查询起始的位置,计数并非从右往左的,仍然是从左往右计数。这边start给定的参数,计数是从左往右计数的,但是查询仍然是从右往左的。另外compare参数,vbBinaryCompare,执行二进制比较,即精确的匹配,区分大小写的vbTextCompare,执行文本比较,不精确比较,大小写不区分的。

示例

Sub InStrRevTest()
    Debug.Print InStrRev("ABCDEFGaA", "A") 'output 9
    Debug.Print InStrRev("ABCDEFGaA", "A", 8, vbBinaryCompare) 'output 1
    Debug.Print InStrRev("ABCDEFGaA", "A", 8, vbTextCompare) 'output 8
End Sub

实例:利用InStrRev函数,分离文件名和后缀

Sub InStrRevTest()

  Dim fileNameStr, fileNameReturn, fileSuffixReturn, stringCheck As String
  
  fileNameStr = "测试数据表.cpp"
  fileNameReturn = Mid(fileNameStr, 1, InStrRev(fileNameStr, ".") - 1)
  fileSuffixReturn = Mid(fileNameStr, InStrRev(fileNameStr, ".") + 1, Len(fileNameStr))
  
  Debug.Print fileNameReturn
  Debug.Print fileSuffixReturn
  
End Sub

只要给定文件名,就可以顺利的分开文件名和后缀,比较方便。平时应该也会用到。

另外Instr的用法,与这篇的正好相反,可以跳转一起查看 → Instr的用法,CSDN。

你可能感兴趣的:(Excel)