VBA Like 运算符

2025年4月26日 | 阅读13分钟

Microsoft Excel VBA (Visual Basic for Applications) 中的 “Like” 运算符是一个强大的模式匹配工具,开发人员使用它来检查字符串是否符合某个模式或结构。当我们需要将字符串与预定义的模式进行比较时,它经常被使用,该模式可能包含通配符或各种特定字符。但是,在使用 Like 运算符时,被比较的字符串不需要完全匹配。相反,它基于定义的模式进行匹配。这使得它在数据过滤、检查输入格式或验证应用程序中可能因值不同但有效遵循通用格式的字符串等任务中特别有用。

尽管如此,Like 运算符的一个主要优点是它能够处理通配符。通配符是代表未知字符或字符组的特殊字符。例如,星号 (*) 通配符可以代表任何字符序列,而问号 (?) 通配符则分别代表任何单个字符。这些通配符有助于构建灵活而强大的搜索条件。Like 运算符通常与 = 运算符进行比较,但 = 运算符检查精确匹配,而 Like 运算符提供更广泛的可能性。例如,我们还可以使用 Like 运算符来检查字符串是否以特定字符集开头、包含字符序列或以特定模式结尾。当数据可能具有不同前缀、后缀或遵循一致但不精确结构的嵌入值时,它非常有用。

Like 运算符

Like 运算符对于开发人员来说是一个非常有用的功能,尤其是在数据可能不一致但实际遵循可识别模式的应用程序中。此外,Microsoft Excel VBA Like 运算符被认为是一个有用的工具,它允许我们比较字符串并检查它们是否遵循特定模式。当我们需要根据灵活的模式而不是精确匹配来搜索或验证文本时,它特别方便。此运算符可以与称为通配符的特殊字符一起使用,这有助于匹配字符串的变量部分。

两个主要的通配符是问号 (?)星号 (*)

  1. 问号 (?): 可以用来匹配字符串中的任何一个字符。例如,如果字符串是“CAT”,模式是“C?T”,那么 VBA LIKE 运算符将返回 TRUE 作为输出值。另一方面,如果字符串是“CATCH”而模式是“C?T”,那么 VBA LIKE 运算符将返回 FALSE
  2. 星号 (*): 这通常匹配零个或多个字符。例如,如果 字符串 是“Good”,模式是“G**d”,VBA LIKE 运算符将返回 TRUE
  3. 方括号 (): 这也匹配括号中指定的任何字符。
    • :这匹配 Char-Char 范围内可用的任何单个字符。
    • :这匹配列表中不可用的任何单个字符。
    • :这匹配 Char-Char 范围内不可用的任何单个字符

让我们看一个使用 VBA Like 运算符验证电子邮件地址的示例。这里,我们有一个名为“ValidateEmail”的子程序,旨在验证存储在“email”变量中的电子邮件地址的格式。条件检查“email”变量是否匹配模式“@.”,其中“”匹配零个或多个字符。

VBA Like operator

此模式验证电子邮件包含“@”符号和至少一个点(用于域扩展名)。如果条件为真,则消息框显示 “Email is valid!”;否则,它显示 “Invalid email format.”

VBA Like operator

如何使用 VBA `Like` 运算符

如果我们正在使用 Microsoft Excel 并希望自动化任务或需要创建自定义函数,那么我们需要使用 VBA(Visual Basic for Applications),因为它可以大大提高我们的生产力。此外,VBA 中最有用的工具之一就是 `Like` 运算符。此运算符通常允许我们根据模式比较字符串,并且它主要支持通配符,这使得它在模式匹配或有效过滤等任务中非常灵活。

在本教程中,我们将逐步介绍如何在 VBA 代码中有效使用 `Like` 运算符。通过遵循所有这些步骤,我们可以在 Microsoft Excel VBA 项目中开始利用模式匹配的强大功能。

步骤 1:打开 VBA 编辑器:我们将首先访问 Microsoft Excel 中提供的 VBA 编辑器。在此之前,我们需要遵循以下所有简单说明

  1. 打开我们的 Microsoft Excel 工作簿。
    VBA Like operator
  2. 然后需要在各自的键盘上按下 ALT + F11。这将打开 Visual Basic for Applications (VBA) 编辑器。
    VBA Like operator

相应的 VBA 编辑器通常被认为是我们可以轻松编写和修改代码的地方。此编辑器允许我们仅通过使用 VBA 来自动化 Microsoft Excel 任务。

步骤 2:插入新模块: 一旦进入 VBA 编辑器,下一步就是插入一个新模块。这可以通过以下步骤实现。

  1. 在 VBA 编辑器中,我们将点击顶部菜单中提供的 插入 选项。
    VBA Like operator
  2. 从下拉菜单中,我们只需选择 模块。这样,一个新模块也将添加到我们的项目中。
    VBA Like operator

现在,我们有一个干净的空间可以轻松编写和测试我们的 VBA 代码。

步骤 3:声明变量: 在相应的 VBA 中,变量用于存储我们实际想要处理的值。当我们使用 `Like` 运算符时,我们通常会比较字符串,因此声明可以存储文本值的变量非常重要。

  • 例如,如果我们要检查人们的名字和姓氏,我们可以这样声明变量

VBA Like operator

步骤 4:使用 `Like` 运算符比较字符串: VBA 中的 `Like` 运算符主要用于将字符串与各种特定模式进行比较。我们还可以使用通配符来定义灵活的字符串比较模式。`Like` 运算符中最常见的通配符是

  • `?` – 精确匹配一个字符。例如,`J?n` 将匹配“Jon”、“Jen”或“Jan”,但不匹配“Joan”或“Johnny”。
  • `*` – 匹配零个或多个字符。例如,`J*n` 将匹配“Jon”、“John”、“Jonn”、“Jasmine”等。

以下是如何使用 `Like` 运算符的示例


VBA Like operator

在这种情况下,代码检查 `firstName` 是否与一个模式匹配,该模式以字母“J”开头,以“n”结尾,中间包含任意数量的字符。如果匹配,它将显示一个消息框,显示“First name matches the pattern!” 否则,它将显示“First name does not match the pattern.”

步骤 5:在条件语句中使用 `Like` 运算符: 通常,我们会在 `If...Then...Else` 等条件语句中使用 `Like` 运算符,以便根据比较是否匹配采取行动。`If...Then...Else` 结构允许我们根据比较结果有效地执行不同的操作。

例如


VBA Like operator

步骤 6:运行代码: 编写完代码后,就可以运行它并查看结果了。为此

  1. 首先,只需在代码中的任意位置单击。
  2. 之后,我们必须按下键盘上的 `F5` 键,或转到“运行”菜单。之后,我们将选择 运行子程序/用户窗体

完成此操作后,我们的代码将执行,并且根据提供的输入,我们将遇到消息框形式的输出。尽管如此,VBA `Like` 运算符被认为是一个强大的工具,用于使用通配符(例如 `?``*`)比较字符串,我们可以轻松创建灵活的模式来匹配字符串并根据是否发生匹配执行操作。

通过遵循所有这六个简单步骤,我们今天就可以开始在 VBA 项目中使用 `Like` 运算符。无论是过滤数据、验证输入还是执行模式匹配任务,`Like` 运算符都将使我们的 VBA 编程更加高效和有效,因此每个人都可以轻松使用它。

示例

#示例 1:在 `?` 通配符的帮助下使用 Like 运算符。

这个特定的示例演示了如何轻松使用 `Like` 运算符和 `?` 通配符,它匹配任何字符。该过程主要包括创建 VBA 子程序、声明字符串变量,以及测试字符串是否与模式匹配。

现在让我们逐步了解该示例

步骤 1:定义子程序: 我们必须首先定义一个名为 `Example1` 的子程序。


VBA Like operator

此特定行设置了代码将有效驻留的子程序。

步骤 2:声明字符串变量: 在此步骤中,我们将声明一个变量来保存我们要测试的字符串。通常,变量通过使用 `Dim` 关键字声明,然后是变量名和它将有效保存的数据类型。


VBA Like operator

步骤 3:为字符串变量赋值: 在此步骤中,在声明变量之后,我们需要将其赋值为字符串“apple”。此步骤有效地设置了将在后续步骤中与模式进行比较的字符串。


VBA Like operator

步骤 4:开始 If 语句: 此代码的核心逻辑位于 `If` 语句中。在 Microsoft Excel VBA 中,`If` 语句允许我们运行不同的代码块,这些代码块基于条件是真还是假。在这里,我们将使用 `Like` 运算符检查字符串 `str` 是否匹配模式 `a?ple`。

模式 `a?ple` 中的 `?` 是一个通配符,表示任何单个字符。这意味着字符串“apple”将匹配模式“a?ple”,其中 "?" 在这种情况下可以很容易地被字母“p”替换。


VBA Like operator

步骤 5:如果找到匹配项,则显示消息框: 如果步骤 4 中的条件评估为 `True`(表示字符串与模式匹配),则会显示一个带有文本“Match found!” 的消息框。这将通知我们模式已匹配字符串。


VBA Like operator
VBA Like operator

步骤 6:准备无匹配: 如果在步骤 4 中条件评估为 `False`(即字符串与模式不匹配),则代码将移动到 `Else` 部分。但是,这部分代码通常在未找到匹配项时运行。它主要通过显示带有 "No match found.” 的消息框来指示结果。


VBA Like operator

步骤 7:显示无匹配消息框: 现在,在这种特殊情况下,如果字符串与模式不匹配,将弹出一个消息框,显示 "No match found.” 这将在模式与字符串不一致时向我们提供反馈。


VBA Like operator

步骤 8:运行宏: 现在,为了运行代码,我们需要保存 VBA 宏,然后执行它。当我们使用字符串“apple”运行此代码时,`Like` 运算符将检查它是否匹配模式 “a?ple。” 由于字符串“apple”实际上与模式匹配,其中 “?” 可以替换为字母“p”,因此消息框将分别显示 “Match found!”

完整代码

尽管如此,这个简单的例子演示了如何有效地使用 `Like` 运算符和 `?` 通配符来匹配 VBA 中的字符串。`?` 通配符在我们需要允许字符串中单个字符变化时非常有用。因此,通过遵循所有这些步骤,我们可以轻松修改模式或字符串以检查字符的不同组合。

#示例 2:通过使用星号

在此示例中,“通配符”匹配零个或多个字符。因此“bnana”以有效的方式匹配“banana”。

步骤 1:子程序定义: 我们将通过定义名为“Example2”的子程序来开始。


VBA Like operator

步骤 2:字符串声明: 在此步骤中,我们即将有效使用“Dim”语句来声明一个名为“str”的字符串变量。


VBA Like operator

步骤 3:变量设置:我们将设置 变量“str”以包含字符串“banana”。


VBA Like operator

步骤 4:初始化 IF 语句: 此特定代码行启动一个“If”语句,该语句有条件地执行代码。它主要评估“str”变量的内容是否符合“bnana”模式,其中 " 表示可能存在零个或多个字符。


VBA Like operator

步骤 5:如果步骤 4 中的条件为真(找到匹配项),则此代码行将显示一个消息框,其中包含文本“Match found!。


VBA Like operator

步骤 6:在此步骤中,如果步骤 4 中的条件为假(未找到匹配项),则此代码行指示代码应执行以下代码块(在此例中,是下一步中的 MsgBox)。


VBA Like operator

步骤 7:如果步骤 4 中的条件为假,则此行将显示一个消息框,其中包含文本“No match found!。


VBA Like operator

步骤 8:保存并运行宏: 在此步骤中,我们必须保存宏,然后需要运行代码。执行后,代码将显示一个消息框,其中打印的文本为 “Match found!”,因为字符串“bnana”与模式“banana”匹配,其中 " 代表零个或多个字符,从而允许在“b”之后出现任何字符。

VBA Like operator

#示例 3:通过使用方括号 []

在此示例中,相应的“[1-5]”匹配任何单个数字,主要范围从 1 到 5,因此“[1-5]2345”匹配“12345。”

步骤 1:子程序定义: 我们将定义一个名为“Example3”的子程序函数。


VBA Like operator

 

步骤 2:字符串建立: 我们将建立一个字符串变量,通常表示为“str。”


VBA Like operator

步骤 3:字符串分配: 在此步骤中,我们将字符串 “12345”分配给标记为“str”的变量。


VBA Like operator

步骤 4:If 语句的初始化: 此行有效地启动一个“If”语句,并因此具有一个特定条件。尽管如此,这个特定条件将评估“str”的内容是否与 “[1-5]2345” 模式对齐,其中 “[1-5]” 表示实际上范围从 1 到 5 的任何单个数字。


VBA Like operator

步骤 5:更开放地说,当上述步骤 4 中的条件保持为真时,此代码行将显示一个消息框,其中包含文本 “Match found!”


VBA Like operator

步骤 6:然而,在此步骤中,如果步骤 4 中的条件被证明是假的,那么在这种情况下,此行将指示代码应该执行以下代码块(在此例中,是下一步中的 VBA 中的 MsgBox)。


VBA Like operator

步骤 7:在此步骤中,借助代码,如果步骤 4 中的条件为 false,我们将显示一个消息框,其中包含文本 “No match found!”


VBA Like operator

步骤 8:保存并运行宏:我们需要保存宏,保存宏后,我们将单击 运行 选项。一旦代码执行,代码将显示一个消息框,其中包含文本“Match found!”,这是因为字符串“12345”与模式“[1-5]2345”匹配,其中“[1-5]”表示范围从 1 到 5 的任何单个数字。

VBA Like operator

完整代码

需要记住的关键点

个人在使用 VBA Like 运算符时需要记住的各种重要关键字如下:

  1. 默认情况下,Microsoft Excel VBA 中相应的 VBA Like 运算符不区分大小写。我们可以使用自定义比较函数使其区分大小写。
  2. 但是,个人必须记住,如果他们想匹配通配符,例如 “?”"*",那么他们需要使用波浪号 " 作为转义字符
  3. 个人还可以在单个模式中使用多个通配符。例如,“a*p?e”将匹配“apple”。
  4. VBA Like 运算符通常用于基于模式的字符串匹配。它还支持通配符,例如“?”和“*”分别表示单个和多个字符。
  5. 如果 VBA Like 运算符的行为与预期流程不符,则需要对代码进行调试,为此我们需要使用自定义比较来进行大小写敏感性。
  6. VBA Like 运算符通常可用于执行各种任务,包括执行数据验证、文本解析和基于模式的数据过滤。