VBA  Find用法
Excel的那个功能对查指定的数据超级有效,专门是在含有大量数据的工作表中搜索数据时,更能表现出该功能的快速和便利。一样,在ExcelVBA中利用与该功能对应的Find方式,提供了一种在单元格区域查特定数据的简单方式,而且比用传统的循环方式进行查的速度更快。
--------------------------------------------------------------------------------
1. Find方式的作用
Find方式将在指定的单元格区域中查包括参数指定数据的单元格,假设到符合条件的数据,那么返回包括该数据的单元格;假设未发觉相匹配的数据,那么返回Nothing。该方式返回一个Range对象,在利用该方式时,不阻碍选定区域或活动单元格。
--------------------------------------------------------------------------------
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变量所代表的值的单元格,并删除该单元格所在的列。
‘- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sub Find_Error()
Dim rng As Range
Dim what As String
what = "Error"
Do
    Set rng = ActiveSheet.UsedRange.Find(what)
    If rng Is Nothing Then
      Exit Do
    Else
      Columns(rng.Column).Delete
    End If
Loop
End Sub
‘- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3.2 带格式的查
本例如在当前工作表单元格中查字体为"Arial Unicode MS"且颜为红的单元格。其中,Application.FindFormat对象许诺指定所需要查的格式,现在Find方式的参数SearchFormat应设置为True。
‘- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sub FindWithFormat()
With Application.FindFormat.Font
        .Name = "Arial Unicode MS"
        .ColorIndex = 3
End With
Cells.Find(what:="", SearchFormat:=True).Activate
End Sub
‘- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[小结] 在利用Find方式到符合条件的数据后,就能够够对其进行相应的操作了。您能够:
(1)对该数据所在的单元格进行操作;
(2)对该数据所在单元格的行或列进行操作;
(3)对该数据所在的单元格区域进行操作。
--------------------------------------------------------------------------------
4. 与Find方式相联系的方式
能够利用FindNext方式和FindPrevious方式进行重复查。在利用这两个方式之前,必需用Find方式指定所需要查的数据内容。
4.1 FindNext方式
字符串常量的用法FindNext方式对应于“查与替换”对话框中的“查下一个”按钮。能够利用该方式继续执行查,查下一个与Find方式中所指定条件的数据相匹配的单元格,返回代表该单元格的Range对象。在利用该方式时,不阻碍选定区域或活动单元格。
4.1.1 语法
<单元格区域>.FindNext(After)
4.1.2 参数说明
参数After,可选。代表所指定的单元格,将从该单元格以后开始进行查。开始时不查该位置所在的单元格,直到FindNext方式绕回到该单元格时,才对其内容进行查。所指定的位置必需是单元格区域中的单个单元格,若是未指定本参数,那么将从单元格区域的左上角的单元格以后开始进行查。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。