分享成果,随喜正能量】心诚是人最能够表现自己文化、知识、品味、个性、性格、气质、教养、修养、涵养等的一面镜子,没有心诚休想在生活的空间里拥有一席之地。显然,诚心诚意是人际关系交往的一种最直接的表达方式,同时诚心诚意也是众望所归的一种牢固信赖,诚心诚意更是人们最终必须追逐的一种高风亮节。

《VBA经典应用69例》,是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中要利用好VBA。本套教程共三册六十九个专题,今日内容是教程的应用3:字符串值的比较方案之 :Find方法的应用。

字符串值的比较方案之Find方法的应用(字符串值的比较方案之Find方法的应用)(1)

应用3 VBA中字符串值的比较方案

大家好,对于职场中和数据打交道较多的学员,学习、利用VBA本身就是工作中的一件乐事,将大量的手工操作交给计算机自己去完成,收获的是效率的提高,以及工作后大量的宽裕的实间。这讲给大家讲解一个实际的VBA利用场景,并加以总结。在利用VBA处理实际问题中最为常见的一类是值的比较判断。当数据的值满足某种条件时让程序做相应处理,当不满足时做其他处理,这种逻辑是贯穿于整个代码过程的基本逻辑思路,这个专题我们就来讲解一下VBA中有关值的比较判断方案。

3 Find方法的应用

下面我们来看第三种方案,Find方法。这种方法在区域中查找特定信息。

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

Expression是一个表示 Range 对象的变量。

参数:

① What 必需 Variant 要搜索的数据。 可为字符串或任意 Microsoft Excel 数据类型。

② After 可选 Variant 要在其后开始搜索的单元格。从用户界面搜索时,这对应于活动单元格的位置。

③ LookIn 可选 Variant 可以是下列 XlFindLookIn 常量之一:xlFormulas、xlValues、xlComments 或 xlCommentsThreaded。

④ LookAt 可选 Variant 可以是下列 XlLookAt 常量之一:xlWhole 或 xlPart。

⑤ SearchOrder 可选 Variant 可以是以下 XlSearchOrder 常量之一:xlByRows 或 xlByColumns。

⑥ SearchDirection 可选 Variant 可以是以下 XlSearchDirection 常量之一: xlNext 或 xlPrevious。

⑦ MatchCase 可选 Variant 如果为 True,则搜索区分大小写。 默认值为 False。

⑧ MatchByte 可选 Variant 仅在选择或安装了双字节语言支持时使用。 如果为 True,则双字节字符仅匹配双字节字符。如果为 False,则双字节字符匹配其单字节等效字符。

⑨ SearchFormat 可选 Variant 搜索格式。

同样是上述提到的应用场景,我们看我给出的下面代码:

Sub mynzE()

'取得A列最后一个非空的单元格

lastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 To lastRow

【代码见教程】

End Sub

代码截图:

字符串值的比较方案之Find方法的应用(字符串值的比较方案之Find方法的应用)(2)

代码讲解:

① Set searchResult = searchRange.Find("vba", MatchCase:=False, Lookat:=xlPart) 设置为不区分大小写,不完全匹配查找。

② If Not searchResult Is Nothing Then searchResult.Offset(0, 1) = "找到VBA" 这种写法是一般的写法。如果找了查找内容,那么在后面的单元格中写入“找到VBA”。

③ If searchResult Is Nothing = False Then searchResult.Offset(0, 1) = "找到VBA" 这种是第二种写法,其中searchResult Is Nothing = False 写法等同于Not searchResult Is Nothing

④ If searchResult Is Nothing = False Then Range("B" & i) = "找到VBA"

这是第三种写法,利用了Range("B" & i) 直接写入指定的值。

⑤ If searchResult Is Nothing = False Then Cells(searchResult.Row, searchResult.Column 1) = "找到VBA"

这是第四种写法,Cells(searchResult.Row, searchResult.Column 1)是指定写入给定值的单元格,这种写法也是非常经典的写法。

字符串值的比较方案之Find方法的应用(字符串值的比较方案之Find方法的应用)(3)

总结:在本专题中,我提供给了可用于值比较的三种方法。最后,重要的是不要忘记考虑区分大小写,因为这是最常见的错误来源之一。

今日内容回向:

1 值比较有几种方法?

2 在FIND方法中提供了多种找到值后的处理,是否理解?

本讲内容参考程序文件:应用003.xlsm

字符串值的比较方案之Find方法的应用(字符串值的比较方案之Find方法的应用)(4)

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

字符串值的比较方案之Find方法的应用(字符串值的比较方案之Find方法的应用)(5)

,