首页系统综合问题VBA代码-find方法(2)

VBA代码-find方法(2)

时间2023-02-04 18:18:54发布分享专员分类系统综合问题浏览264

今天小编给各位分享previous的知识,文中也会对其通过VBA代码-find方法(2)和vba用find查找指定值并返回等多篇文章进行知识讲解,如果文章内容对您有帮助,别忘了关注本站,现在进入正文!

内容导航:

  • VBA代码-find方法(2)
  • vba用find查找指定值并返回
  • VBA 代码 Find方法问题
  • vba语言中find 的用法
  • 一、VBA代码-find方法(2)

    在Excel中,选择菜单“编辑”——“查找(F)…”命令或者按“Ctrl+F”组合键,将弹出“查找和替换”对话框。

    在“查找”选项卡中,'输入需要查找的内容并设置相关选项后进行查找,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。

    在每次使用Find方法后,参数LookIn、LookAt、SearchOrder、MatchByte的设置将保存。如果下次使用本方法时,不改变或指定这些参数的值,那么该方法将使用保存的值。(在VBA中设置的这些参数将更改“查找与替换”对话框中的设置;同理,更改“查找与替换”对话框中的设置,也将同时更改已保存的值。也就是说,在编写好一段代码后,若在代码中未指定上述参数,可能在初期运行时能满足要求,但若用户在“查找与替换”对话框中更改了这些参数,它们将同时反映到程序代码中,当再次运行代码时,运行结果可能会产生差异或错误。若要避免这个问题,在每次使用时建议明确的设置这些参数)

    (findnext方法)介绍

    说明:可以使用该方法继续执行Find方法所进行的查找,查找前一个与Find方法中所指定条件的数据相匹配的单元格,返回代表该单元格的Range对象。在使用该方法时,不影响选定区域或活动单元格

    语法:<单元格区域>.FindNext(After)

    参数After Variant 类型,可选。指定一个单元格,查找将从该单元格之后开始。此单元格相应于从用户界面查找时的活动单元格位置。注意,After 必须是查找区域中的单个单元格。请记住查找是从该单元格之后开始的;直到本方法环绕到此单元格时,才检测其内容。如果未指定本参数,查找将从区域的左上角单元格之后开始。

    (FindPrevious方法)介绍

    说明:可以使用该方法继续执行Find方法所进行的查找,查找前一个与Find方法中所指定条件的数据相匹配的单元格,返回代表该单元格的Range对象。在使用该方法时,不影响选定区域或活动单元格。

    语法<单元格区域>.FindPrevious(After)

    参数After,可选。代表所指定的单元格,将从该单元格之前开始进行查找。开始时不查找该位置所在的单元格,直到FindPrevious方法绕回到该单元格时,才对其内容进行查找。所指定的位置必须是单元格区域中的单个单元格,如果未指定本参数,则将从单元格区域的左上角的单元格之前开始进行查找。

    当查找到指定查找区域的起始位置时,本方法将环绕至区域的末尾继续查找。发生环绕后,为停止查找,可保存第一次找到的单元格地址,然后测试下一个查找到的单元格地址是否与其相同,作为判断查找退出的条件,以避免出现死循环。

    代码示例:二次查找 findnext

    Sub findnext1()

    '二次查找,在上次查找的基础上再次向后查找

    Dim MRG As Range

    Set MRG = Range("D:D").Find("A", lookat:=xlPart)

    MsgBox MRG.Address

    Set mrg1 = Range("D:D").FindNext(MRG)

    MsgBox mrg1.Address

    End Sub

    代码解析

    sub findnext1()

    Dim MRG As Range

    '声明 变量MRG为单元格对象(这个变量可能装一个单元格也可能装一个单元格区域若干单元格,甚至可能是若干不相邻的单元格。只要是单元格这个变量都可以装)

    Set MRG = Range("D:D").Find("A",lookat:=xlPart)

    '在D列查找"A",将第一个存储“A”的单元格对象赋值给MRG,参数设定为单元格匹配,从D1之后开始查找(不含D1),理由见上方说明,此时MRG是工作表的某一个单元格了,而不再是其他的了,除非你再次进行赋值来改变

    MsgBox MRG.Address

    '返回单元值为“A”的单元格地址

    Set mrg1 = Range("D:D").FindNext(MRG)

    '在D列MRG这个单元格对象之后再次查找“A”

    MsgBox mrg1.Address

    '返回MRG之后单元值为“A”的单元格地址

    End Sub

    一、vba用find查找指定值并返回

    FindNext方法对应于“查找与替换”对话框中的“查找下一个”按钮。可以使用该方法继续执行查找,查找下一个与Find方法中所指定条件的数据相匹配的单元格,返回代表该单元格的Range对象。在使用该方法时,不影响选定区域或活动单元格。
    Find方法将在指定的单元格区域中查找包含参数指定数据的单元格,若找到符合条件的数据,则返回包含该数据的单元格;若未发现相匹配的数据,则返回Nothing。该方法返回一个Range对象,在使用该方法时,不影响选定区域或活动单元格。

    二、VBA 代码 Find方法问题

    有点问题,你的代码中指出找到str2之后,如果找到,Sheet1.Cells("C" + i)这个表达应该是错误的吧?CELLS(ROW,COLUMN)是这样的表达方式才对吧?

    这个是EXCEL精英网关于FIND的说明。

    三、vba语言中find 的用法

    你的算法有问题,不知道你要的目的是什么?
    Set mycell = worksub.Columns(19).Find(mytmpcell.Value, , xlWhole)
    一般只要整个匹配就行了,其它参数都可以省略。
    如果全部是数字型 的,就可以写成
    Set mycell = worksub.Columns(19).Find(mytmpcell.Value,xlValues)
    建议你到论坛发帖:
    我在那等你,上传附件

    关于previous的问题,通过《VBA 代码 Find方法问题》、《vba语言中find 的用法》等文章的解答希望已经帮助到您了!如您想了解更多关于previous的相关信息,请到本站进行查找!

    爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。

    previous
    写不出Assignment该怎么办? 「英语共读」第49期