VBA Instr 函数

17 Mar 2025 | 6 分钟阅读

我们经常需要在句⼦或整个 Excel 表格中查找单词,以应⽤某种格式或进⾏更改。例如,您只想将“VBA Programming Language”字符串中的单词“VBA”设置为粗体。 定位单词出现的最佳⽅式是使⽤内置的 VBA InStr 函数。

本教程将带您了解使⽤ VBA InStr 函数编写宏代码的定义、语法、参数、返回类型和不同示例。

什么是 Instr 函数?

“VBA Instr 字符串函数有助于查找任何特定字符在提供的字符串中的位置。例如,如果想在“Excel”中找到“x”的位置,使⽤ Excel VBA Instr 函数将返回 2。”

VBA INSTR 函数是归类为字符串/⽂本函数下的内建函数。此函数在 Microsoft Visual Basic 编辑器中以 VBA 宏进⾏编码。 但是,您也可以在 Excel 表格中将 INSTR ⽤作 Excel 函数。

语法

参数

开始(可选):此参数代表搜索的起始位置。 如果跳过此参数,则默认起始值为 1。

字符串(必需):此参数代表要在其中搜索的字符串。

⼦字符串(必需):此参数代表您要查找的⼦字符串。

⽐较(可选):此参数代表要执⾏的⽐较类型。 它可以是以下值之⼀

  1. vbBinaryCompare(⽐较 as 0):此⽐较字段代表⼆进制⽐较,也可以输⼊为零 (0)。它是在实际字符串中对⼦字符串进⾏区分⼤⼩写的搜索('XYZ' 与⼩写 'xyx' 不同)。
  2. vbTextCompare(⽐较 as 1):这是⽂本⽐较,可以输⼊为 1 (1)。它是在“字符串 1”中进⾏对“字符串 2”的不区分⼤⼩写搜索。
  3. vbDatabaseCompare(⽐较 as 2):这可以输⼊为 2 (2)。它根据 MS Access 数据库的数据进⾏⽐较。

注意事项

  • 许多⽤户将 INSTR 函数误认为是⼯作表函数。但这不对,因为您不能在⼯作表内使⽤它,因为它不是⼯作表函数,⽽是 VBA 函数。
  • 如果省略或为空⽩,此函数将返回 [开始] 参数的值。
  • 如果 InStr 函数⽆法在主字符串中找到⼦字符串,它将返回 0。

示例

INSTR 示例 1:INSTR 函数查找字符串“VBA World”中“o”的位置。

使⽤ INSTR 函数,我们将从头开始查找字符串“VBA World”中“o”的位置。

以下是编写 VBA 宏以查找字符“o”在提供的字符串中位置的步骤

步骤 1:通过单击快捷键 Alt +F11 或单击开发⼯具窗⼝ -> 视觉基本编辑器,转到 VBA 开发⼯具选项卡。

步骤 2:将出现 VB 编辑器。下⼀步是创建⼀个模块。右键单击 VBA 项⽬-> 转到插⼊-> 转到模块。

VBA Instr Function

步骤 3:将插⼊ VBA 模块。下⼀步是使⽤字符串“VBA World”声明并初始化变量 MyVal。

代码如下所示

步骤 4:接下来,我们将调⽤ InStr 函数,并将字符串作为第⼀个参数传递,并在第⼆个参数中指定⼦字符串“o”。 稍后,使⽤ MsgBox,我们将显⽰输出。


VBA Instr Function

输出

通过按 F5 键运⾏代码并获取结果。您将在 Excel 表格中看到以下消息框,显⽰输出。

VBA Instr Function

结果,您将注意到消息框将显⽰输出 5。

程序 2:使⽤ INSTR 查找第⼆个单词的位置

假设您想在句⼦“It's better to have butter on the butter table”中查找“butter”的位置。 但是,存在⼀个变化,因为您希望搜索从第⼆个单词开始,⽽不是第⼀个单词。

要解决此问题,您所需要做的就是更改 [开始] 参数,以确保它指定第⼆个单词开始的位置。

以下是编写 VBA 宏以查找字符“o”在提供的字符串中位置的步骤

步骤 1:通过单击快捷键 Alt +F11 或单击开发⼯具窗⼝ -> 视觉基本编辑器,转到 VBA 开发⼯具选项卡。

步骤 2:将出现 VB 编辑器。下⼀步是创建⼀个模块。右键单击 VBA 项⽬-> 转到插⼊-> 转到模块。

VBA Instr Function

步骤 3:将插⼊ VBA 模块。下⼀步是声明并初始化变量位置。 在此变量中,我们将存储⼦字符串 butter 的位置。

代码如下所示

步骤 4:接下来,我们将调⽤ InStr 函数,并将 [开始] 参数作为 4 传递,在第⼆个参数中指定字符串,并在第三个参数中指定⼦字符串“butter”。 稍后,使⽤ MsgBox,我们将显⽰输出。


VBA Instr Function

输出

通过按 F5 键运⾏代码并获取结果。您将在 Excel 表格中看到以下消息框,显⽰输出。

VBA Instr Function

宏将返回消息框,显⽰值为 22,因为我们已将起始位置指定为 4。因此,它将忽略第⼀个出现的“butter”,并在字符串中找到单词“butter”的第⼆个出现。

InStr 示例 3:在 Excel ⼯作表中查找指定电子邮件地址中 @ 的出现。

在此宏代码中,我们将对宏进⾏编码,⽽不是编写整个宏,稍后将在我们的 Excel ⼯作表中使用。

以下是实现 VBA 函数以查找字符“@”在提供的字符串中出现的步骤

步骤 1:通过单击快捷键 Alt +F11 或单击开发⼯具窗⼝ -> 视觉基本编辑器,转到 VBA 开发⼯具选项卡。

步骤 2:将出现 VB 编辑器。下⼀步是创建⼀个模块。右键单击 VBA 项⽬-> 转到插⼊-> 转到模块。

VBA Instr Function

步骤 3:接下来,我们将创建⼀个⾃定义函数,就像任何其他 Excel ⼯作表函数⼀样。 将函数定义为整数值并声明您的变量。

代码

步骤 4:在 InStr 函数内部,将您的字符串作为 Ref,将⼦字符串作为“@”传递。 将整数 ValPos 传递给 LocatePos 函数。 此函数将获取⼀个单元格引⽤作为输⼊,并向您提供其中 @ 的位置。

代码


VBA Instr Function

输出

打开您的 Excel ⼯作表,您将注意到 LocatePos 被创建为⼀个⾃定义函数。 使⽤该函数,传递字符串,它将返回⼦字符串“@”的位置。

请参阅下⾯的输出

VBA Instr Function
下⼀个主题VBA Split 函数