VBA笔记篇!赶紧学会这几招,让工作提速十倍!

1. FIND 方法进行查找

应用于 Range 对象的 Find 方法在区域中查找特定信息,返回 Range 对象。

FIND 语法:

expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

其中,expression 是必需的,该表达式返回一个 Range 对象。

9 个参数具体含义:

  • What:必需,要搜索的数据,可为字符串或任意数据类型。
  • After:可选,表示搜索过程将从其之后开始进行的单元格,必须是区域中的单个单元格。查找时从该单元格之后开始,直到绕回到指定单元格时才对其搜索。如果未指定本参数,搜索将从区域的左上角单元格之后开始。本例中将 After 参数设置为 A 列的最后一个单元格,所以查找时从 A1 单元格开始搜索。
  • LookIn:可选,信息类型。
  • LookAt:可选,可为 XlLookAt 常量的 xlWhole 或 xlPart 之一。
  • SearchOrder:可选,可为 XlSearchOrder 常量的 xlByRows 或 xlByColumns 之一。
  • SearchDirection:可选,搜索的方向,可为 XlSearchDirection 常量的 xlNext 或 xlPrevious 之一。
  • MatchCase:可选,若为 True,则进行区分大小写的查找。默认值为 False。
  • MatchByte:可选,仅在选择或安装了双字节语言支持时使用。若为 True,则双字节字符仅匹配双字节字符;若为 False,则双字节字符可匹配其等价的单字节字符。
  • SearchFormat:可选,搜索的格式。

总之,只有 What 参数为必需参数,其余参数均为可选参数。

案例代码:

a6a9f36c-368b-4df5-964c-dae57f4e3d96

2. 使用 Like 运算符来匹配

语法:

result = string Like pattern

  • string:必需,一个字符串。
  • pattern:必需,另一个字符串。

如果 string 与 pattern 匹配,则 result 为 True;如果不匹配,则 result 为 False。如果 string 或 pattern 中有一个为 Null,则 result 为 Null。

通过先理解等于符号再来理解 Like 运算符,比如:

If "张三" = "张三" Then 用于判断一个字符串是否与另一个字符串相同。

当需要模糊查找时,可以将 = 换成 Like 运算符来进行判断,例如:

If "张三吃饭" Like "*张三*" Then

显然,目前通过等于符号无法完成模糊查找,用 Like 运算符加上通配符即可实现。

测试代码:

88891a4f-94a4-473d-b72b-fcb2bfb5a3fc

3. Range 对象的 Replace 方法替换字符串

Range 对象的 Replace 方法。

语法:

expression.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)

  • expression:必需,返回一个 Range 对象。
  • What:必需,要搜索的字符串。
  • Replacement:必需,替换的字符串。
  • LookAt:可选,为常量:xlWhole(完全匹配搜索文本)或 xlPart(匹配搜索文本的任一部分,为默认值)。
  • SearchOrder:可选,指定搜索顺序,为常量:xlByRows 或 xlByColumns,分别表示按行搜索和按列搜索。
  • MatchCase:可选,为 True,则搜索区分大小写。
  • MatchByte:可选,为 True,则双字节字符仅匹配双字节字符;为 False,则双字节字符匹配其单字节等效字符。
  • SearchFormat:可选,方法的搜索格式。
  • ReplaceFormat:可选,方法的替换格式。

需要注意:每次使用此方法时,都会保存 LookAt、SearchOrder、MatchCase 和 MatchByte 的设置。如果在下次调用此方法时不指定这些参数的值,则使用保存的值。设置这些参数会更改“查找和替换”对话框中的设置,更改“查找和替换”对话框中的设置会更改省略参数时使用的已保存值。为避免问题,建议在每次使用此方法时显式设置这些参数。

4. VBA 内置 Replace 函数(注意区分 Range 对象的 Replace 方法)

这两个方法都用于查找和替换。

VBA Replace 函数的语法及参数:

Replace(Expression, Find, Replace, [Start], [Count], [Compare])

必须参数为前三个:原字符串、被搜索的子字符串、用于替换的子字符串,均为字符串类型,函数返回一个字符串。

其余参数为可选参数:

  • Start:Expression 中开始搜索子字符串的位置。如果省略,默认值为 1。在与 Count 关联时必须使用。
  • Count:执行子字符串替换的次数。如果省略,默认值为 -1,表示进行所有可能的替换。在与 Start 关联时必须使用。
  • Compare:指示在计算子字符串时使用的比较类型的数值。如果省略,默认值为 0,表示进行二进制比较。

测试代码:

02e50b3c-b1d2-459b-8d3a-510870b971d6

Range 对象的 Replace 方法支持通配符,VBA 的 Replace 内置函数不支持通配符。

b063fd24-eafc-47c3-bbc3-72947242cdc1

Leave a Reply

Your email address will not be published. Required fields are marked *