Range对象应用大全Find方法应用大全Word格式.docx
- 文档编号:19663947
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:36
- 大小:151.33KB
Range对象应用大全Find方法应用大全Word格式.docx
《Range对象应用大全Find方法应用大全Word格式.docx》由会员分享,可在线阅读,更多相关《Range对象应用大全Find方法应用大全Word格式.docx(36页珍藏版)》请在冰豆网上搜索。
"
EndSub
再试试下面的代码:
SubSlowSearch()
DimRAsRange
ForEachRInSheet1.Cells
IfR.Value="
ThenMsgBox"
NextR
比较一下两段代码的速度,可知第一段代码运行很快,而第二段代码却要执行相当长的一段时间。
2.Find方法的语法
[语法]
<
单元格区域>
.Find(What,[After],[LookIn],[LookAt],[SearchOrder],[SearchDirection],[MatchCase],[MatchByte],[SearchFormat])
[参数说明]
(1)<
,必须指定,返回一个Range对象。
(2)参数What,必需指定。
代表所要查找的数据,可以为字符串、整数或者其它任何数据类型的数据。
对应于“查找与替换”对话框中,“查找内容”文本框中的内容。
(3)参数After,可选。
指定开始查找的位置,即从该位置所在的单元格之后向后或之前向前开始查找(也就是说,开始时不查找该位置所在的单元格,直到Find方法绕回到该单元格时,才对其内容进行查找)。
所指定的位置必须是单元格区域中的单个单元格,如果未指定本参数,则将从单元格区域的左上角的单元格之后开始进行查找。
(4)参数LookIn,可选。
指定查找的范围类型,可以为以下常量之一:
xlValues、xlFormulas或者xlComments,默认值为xlFormulas。
对应于“查找与替换”对话框中,“查找范围”下拉框中的选项。
(5)参数LookAt,可选。
可以为以下常量之一:
XlWhole或者xlPart,用来指定所查找的数据是与单元格内容完全匹配还是部分匹配,默认值为xlPart。
对应于“查找与替换”对话框中,“单元格匹配”复选框。
(6)参数SearchOrder,可选。
用来确定如何在单元格区域中进行查找,是以行的方式(xlByRows)查找,还是以列的方式(xlByColumns)查找,默认值为xlByRows。
对应于“查找与替换”对话框中,“搜索”下拉框中的选项。
(7)参数SearchDirection,可选。
用来确定查找的方向,即是向前查找(XlPrevious)还是向后查找(xlNext),默认的是向后查找。
(8)参数MatchCase,可选。
若该参数值为True,则在查找时区分大小写。
默认值为False。
对应于“查找与替换”对话框中,“区分大小写”复选框。
(9)参数MatchByter,可选。
即是否区分全角或半角,在选择或安装了双字节语言时使用。
若该参数为True,则双字节字符仅与双字节字符相匹配;
若该参数为False,则双字节字符可匹配与其相同的单字节字符。
对应于“查找与替换”对话框中,“区分全角/半角”复选框。
(10)参数SearchFormat,可选,指定一个确切类型的查找格式。
对应于“查找与替换”对话框中,“格式”按钮。
当设置带有相应格式的查找时,该参数值为True。
(11)在每次使用Find方法后,参数LookIn、LookAt、SearchOrder、MatchByte的设置将保存。
如果下次使用本方法时,不改变或指定这些参数的值,那么该方法将使用保存的值。
在VBA中设置的这些参数将更改“查找与替换”对话框中的设置;
同理,更改“查找与替换”对话框中的设置,也将同时更改已保存的值。
也就是说,在编写好一段代码后,若在代码中未指定上述参数,可能在初期运行时能满足要求,但若用户在“查找与替换”对话框中更改了这些参数,它们将同时反映到程序代码中,当再次运行代码时,运行结果可能会产生差异或错误。
若要避免这个问题,在每次使用时建议明确的设置这些参数。
3.Find方法使用示例
3.1
本示例在活动工作表中查找what变量所代表的值的单元格,并删除该单元格所在的列。
SubFind_Error()
DimrngAsRange
DimwhatAsString
what="
Error"
Do
Setrng=ActiveSheet.UsedRange.Find(what)
IfrngIsNothingThen
ExitDo
Else
Columns(rng.Column).Delete
EndIf
Loop
3.2带格式的查找
本示例在当前工作表单元格中查找字体为”ArialUnicodeMS”且颜色为红色的单元格。
其中,Application.FindFormat对象允许指定所需要查找的格式,此时Find方法的参数SearchFormat应设置为True。
SubFindWithFormat()
WithApplication.FindFormat.Font
.Name="
ArialUnicodeMS"
.ColorIndex=3
EndWith
Cells.Find(what:
="
SearchFormat:
=True).Activate
[小结]在使用Find方法找到符合条件的数据后,就可以对其进行相应的操作了。
您可以:
∙对该数据所在的单元格进行操作;
∙对该数据所在单元格的行或列进行操作;
∙对该数据所在的单元格区域进行操作。
4.与Find方法相联系的方法
可以使用FindNext方法和FindPrevious方法进行重复查找。
在使用这两个方法之前,必须用Find方法指定所需要查找的数据内容。
4.1FindNext方法
FindNext方法对应于“查找与替换”对话框中的“查找下一个”按钮。
可以使用该方法继续执行查找,查找下一个与Find方法中所指定条件的数据相匹配的单元格,返回代表该单元格的Range对象。
在使用该方法时,不影响选定区域或活动单元格。
4.1.1语法
.FindNext(After)
4.1.2参数说明
参数After,可选。
代表所指定的单元格,将从该单元格之后开始进行查找。
开始时不查找该位置所在的单元格,直到FindNext方法绕回到该单元格时,才对其内容进行查找。
当查找到指定查找区域的末尾时,本方法将环绕至区域的开始继续查找。
发生环绕后,为停止查找,可保存第一次找到的单元格地址,然后测试下一个查找到的单元格地址是否与其相同,作为判断查找退出的条件,以避免出现死循环。
当然,如果在查找的过程中,将查找到的单元格数据进行了改变,也可不作此判断,如下例所示。
4.2FindPrevious方法
可以使用该方法继续执行Find方法所进行的查找,查找前一个与Find方法中所指定条件的数据相匹配的单元格,返回代表该单元格的Range对象。
4.2.1语法
.FindPrevious(After)
4.2.2参数说明
代表所指定的单元格,将从该单元格之前开始进行查找。
开始时不查找该位置所在的单元格,直到FindPrevious方法绕回到该单元格时,才对其内容进行查找。
所指定的位置必须是单元格区域中的单个单元格,如果未指定本参数,则将从单元格区域的左上角的单元格之前开始进行查找。
当查找到指定查找区域的起始位置时,本方法将环绕至区域的末尾继续查找。
4.2.3示例
在工作表中输入如下图1所示的数据,至少保证在A列中有两个单元格输入了数据“excelhome”。
图1:
测试的数据
在VBE编辑器中输入下面的代码测试Find方法、FindNext方法、FindPrevious方法,体验各个方法所查找到的单元格位置。
SubtestFind()
DimfindValueAsRange
SetfindValue=Worksheets("
Sheet1"
).Columns("
A"
).Find(what:
excelhome"
)
MsgBox"
第一个数据发现在单元格:
&
findValue.Address
).FindNext(After:
=findValue)
下一个数据发现在单元格:
).FindPrevious(After:
前一个数据发现在单元格"
5.综合示例
[示例1]查找值并选中该值所在的单元格
[示例1-1]
SubFind_First()
DimFindStringAsString
FindString=InputBox("
请输入要查找的值:
IfTrim(FindString)<
"
Then
WithSheets("
).Range("
A:
Setrng=.Find(What:
=FindString,_
After:
=.Cells(.Cells.Count),_
LookIn:
=xlValues,_
LookAt:
=xlWhole,_
SearchOrder:
=xlByRows,_
SearchDirection:
=xlNext,_
MatchCase:
=False)
IfNotrngIsNothingThen
Application.Gotorng,True
没有找到!
示例说明:
运行程序后,将在工作表Sheet1的A列中查找InputBox函数输入框中所输入的值,并查找该值所在的第一个单元格,如果没有找到该值,则显示消息框“没有找到!
”。
语句Application.Gotorng,True的作用是将窗口滚动至该单元格,即该单元格位于当前窗口的左上方。
[示例1-2]
SubFind_Last()
请输入要查找的值"
=.Cells
(1),_
=xlPrevious,_
Nothingfound"
与上面的程序不同的是,运行该程序后,将在工作表Sheet1的A列中查找InputBox函数输入框中所输入的值,并选中该值所在的最后一个单元格。
请比较代码中Find方法的参数。
[示例1-3]
SubFind_Todays_Date()
DimFindStringAsDate
FindString=Date
=xlFormulas,_
运行程序后,将在工作表Sheet1的A列中查找日期所在的单元格,并选中第一个日期单元格。
[示例2]在B列中标出A列中有相应值的单元格
SubMark_cells_in_column()
DimFirstAddressAsString
DimmyArrAsVariant
DimIAsLong
Application.ScreenUpdating=False
myArr=Array("
VBA"
'
也能够在数组中使用更多的值,如下所示
myArr=Array("
"
VSTO"
Sheet2"
.Offset(0,1).ClearContents
清除右侧单元格中的内容
ForI=LBound(myArr)ToUBound(myArr)
=myArr(I),_
如要想查找rng.value中的一部分,可使用参数值xlPart
如果使用LookIn:
=xlValues,也会处理公式单元格中与条件相同的值
FirstAddress=rng.Address
rng.Offset(0,1).Value="
X"
如果值VBA找到,则在该单元格的右侧列中的相应单元格作上标记
Setrng=.FindNext(rng)
LoopWhileNotrngIsNothingAndrng.Address<
FirstAddress
NextI
Application.ScreenUpdating=True
运行程序后,将查找工作表Sheet2上A列中的每个单元格,并在值为“VBA”所在的单元格的右侧单元格中作出标记“X”。
[示例3]为区域中指定值的单元格填充颜色
SubColor_cells_in_Range()
DimMySearchAsVariant
DimmyColorAsVariant
MySearch=Array("
myColor=Array("
3"
也能在数组中使用多个值
MySearch=Array("
Hello"
OK"
myColor=Array("
6"
10"
Sheet3"
A1:
C4"
将所有单元格中的填充色改为无填充色
.Interior.ColorIndex=xlColorIndexNone
ForI=LBound(MySearch)ToUBound(MySearch)
=MySearch(I),_
如果想查找rng.value的一部分,则使用参数值xlPart
=xlValues,则也会处理公式单元格
rng.Interior.ColorIndex=myColor(I)
运行程序后,将在工作表Sheet3上的单元格区域A1:
C4中查找含有“VBA”的单元格,并将这些单元格填充为红色。
如示例中的注释所提示的,也可以使用数组,将不同的值所在的单元格标记为不同的颜色。
也可以添加下面的语句,改变单元格中文本的颜色:
.Font.ColorIndex=0
.Font.ColorIndex=myColor(I)
[示例4]为工作表中指定值的单元格填充颜色
SubColor_cells_in_Sheet()
Sheet4"
).Cells
运行程序后,将在工作表Sheet4中查找含有“VBA”的单元格,并将这些单元格填充为红色。
[示例5]为工作簿所有工作表中含有指定值的单元格填充颜色
SubColor_cells_in_All_Sheets()
DimshAsWorksheet
ron"
ForEachshInActiveWorkbook.Worksheets
Withsh.Cells
.Interior.ColorIndex=x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Range 对象 应用 大全 Find 方法
![提示](https://static.bdocx.com/images/bang_tan.gif)