相关文章推荐
博学的瀑布  ·  No module named ...·  7 月前    · 
另类的手链  ·  【Java专栏 ...·  1 年前    · 
胡子拉碴的斑马  ·  [转载] ...·  2 年前    · 

VBA学习 Instr函数的用法

文章为 战战如疯 原创,转载请保留链接: zhanzhanrufeng.com/cat2

今天才发现这个函数之前没有讲过,使用频率非常高的一个处理字符串函数,这节我们来分析一下该函数的用法。

先看该函数的结构 InStr([起始,] 接受搜索的字符串,被搜索的字符串[,匹配模式]),其意义是从起始位置开始向后找到被搜索的字符串第一次出现的位置,如果找的到就返回其在原字符串中的位置,否则就返回0。

Compare 参数设置为:

常数值

描述

vbUseCompareOption -1

使用Option Compare 语句设置执行一个比较。

vbBinaryCompare 0

执行一个二进制比较(即 英文字符区分大小写)。

vbTextCompare 1

执行一个按照原文的比较(即 英文字符不区分大小写)。

vbDatabaseCompare -2

仅适用于Microsoft Access,执行一个基于数据库信息比较。

下面看几个例子:

instr("ABCBD","B")

结果为2,在这里第1个参数省略了,那就是代表从头开始查找,第1个B出现在第2位上,所以结果是2。

instr(3,"ABCBD","B")

结果为4,第1个参数3代表从第3位的C开始向后找,找到的第1个B是在第4位上,所以结果是4。

instr(3,"ABCBD","b",0)

结果是0,第4个参数0代表区分大小写,原字符串中没有小写的b,所以结果是0。

instr(3,"ABCBD","b",1)

结果是4,第4个参数1代表不区分大小写,所以从么3个字符往后找到的第1个符合条件的是大写的B,在第4位。

利用instr这个特点我们常来判断原字符串中是否包括某特定字符,如果返回值是0就是不包含,是0以后的数就是包含,这个判定条件也经常用到。

说到instr我们再来看下另两个函数。 application.find和application.search,find和search都是工作表函数,要在VBA中用前面必须加application,其可以用来在工作表中查找单元格,这个功能我们在Find用法一节已经介绍过,也可以在字符串中查找某个字符,用法和instr差不多,find和search的差别与在工作表中是相同的,find区分大小写,search不区分大小写。看个例子

application.Find("M","AMAAM",3)

上面代码结果是5,即在字符串“AMAAM”中从第3个字符开始向后查找“M”,返回找到的第一个M的位置。

application.search("m","AMAAM",3)

上面的结果也是5,和find的唯一区别就是不用区分大小写。

这两个函数看似和instr相同,但其是工作表函数,局限很大,对其中原字符串的长度是有限制的,具体是多少我没查到,也还没试出来,好像到1万多还是可以的,我弄了个9万多长度的字符串就行不通了,总之这两个函数知道就好,平时尽量不要用,用instr就可以了。

以上,2018年12月23号,星期天。

发布于 2018-12-23 13:10

文章被以下专栏收录