VBA查找下一个|如何在Excel VBA中使用FindNext函数?
Excel VBA查找下一个
就像在excel中,当我们按CTRL + F时,会弹出一个向导框,它使我们可以在给定的工作表中搜索一个值,一旦找到该值,我们就单击“查找下一个”以查找另一个相似的值,因为它是工作表功能出于相同的目的,也可以在VBA中将它作为application.findnext的Application属性方法使用。
在上述范围内找到特定值很好,但是如果要求是多次发现该值怎么办。在较早的文章中,我们讨论了VBA中的“查找”方法,虽然它并不复杂,但是只有使用excel VBA中的“查找下一个”方法才能找到所有重复出现的情况。
在本文中,我们将向您展示如何在Excel VBA中使用此“查找下一个”。
什么是Excel VBA中的“查找下一个”?
就像“查找下一个”一词一样,它表示从找到的单元格中继续搜索下一个值,直到返回到我们开始搜索的原始单元格为止。
这是“查找”方法的高级版本,该方法仅在所述范围内搜索所述值的一倍。
下面是Excel VBA中FIND NEXT方法的语法。
后: 这是我们正在寻找的词。
在Excel VBA中查找下一个方法的示例
以下是excel VBA中的“查找下一个方法”的示例。
例如,查看下面的数据。
您可以在此处下载此VBA查找下一个Excel模板– VBA查找下一个Excel模板步骤1 - 在此数据中,我们需要找到城市名称“班加罗尔”。让我们在Visual Basic编辑器中启动子过程。
代码:
子范围Next_Example()结束子
第2步 - 首先,将变量声明为“ Range”对象。
代码:
Sub RangeNext_Example()昏暗作为范围结束Sub
步骤#3 – 将对象变量的引用设置为“ Range(“ A2:A11”)”。
代码:
Sub RangeNext_Example()Dim Rng作为范围集Rng = Range(“ A2:A12”)End Sub
由于我们的城市列表数据存在于从A2到A11的单元格范围内,因此我们仅搜索城市“班加罗尔”。
由于我们将范围参考设置为变量“ Rng”,因此每次都使用此变量,而不是使用RANGE(“ A2:A11”)。
第4步 - 使用RNG变量并打开Find方法。
代码:
Sub RangeNext_Example()Dim Rng作为范围集Rng = Range(“ A2:A12”)Rng.Find End Sub
步骤#5 – FIND方法的第一个参数是“ What”,即我们试图在上述范围内搜索的内容,因此我们搜索的值是“ Bangalore”。
代码:
Sub RangeNext_Example()Dim Rng作为范围集Rng = Range(“ A2:A12”)Rng.Find What:=“ Bangalore” End Sub
步骤#6 – 为了显示在哪个单元格中,我们发现了该值再声明一个变量作为字符串。
代码:
Sub RangeNext_Example()Dim Rng作为范围Dim CellAdderess As String Set Rng = Range(“ A2:A12”)Rng.Find What:=“ Bangalore” End Sub
步骤#7 – 为该变量分配找到的单元地址。
代码:
Sub RangeNext_Example()Dim Rng作为范围Dim CellAdderess As String Set Rng = Range(“ A2:A12”)。Find(What:=“ Bangalore”)Rng.Find What:=“ Bangalore” CellAddress = Rng.Address End Sub笔记: RNG.Address,因为RNG将具有找到值单元格的引用。
步骤8 – 现在,在VBA的消息框中显示分配的单元格地址变量结果。
Sub RangeNext_Example()Dim Rng作为范围Dim CellAdderess作为字符串设置Rng = Range(“ A2:A12”)。Find(What:=“ Bangalore”)Rng.Find What:=“ Bangalore” CellAddress = Rng.Address MsgBox CellAddress End子
步骤#9 – 运行代码,看看我们在这里得到了什么。
因此,我们在单元格A5中找到了“班加罗尔”值。使用Find方法,我们只能找到一个单元格,因此需要在excel VBA中使用FIND NEXT代替FIND。
步骤#10 – 我们需要引用范围对象变量,但是要在excel VBA中使用FIND NEXT方法。
代码:
Sub RangeNext_Example()Dim Rng作为范围Dim CellAdderess作为字符串集Rng = Range(“ A2:A12”)。Find(What:=“ Bangalore”)Rng.Find What:=“ Bangalore” CellAddress = Rng.Address MsgBox CellAddress Set Rng =范围(“ A2:A12”)。FindNext(Rng)结束子
如上所示,我们使用了VBA FIND NEXT方法,但在函数内部,我们使用了范围对象变量名称。
步骤#11 – 现在再次分配单元格地址,并在消息框中显示该地址。
代码:
Sub RangeNext_Example()Dim Rng作为范围Dim CellAdderess作为字符串集Rng = Range(“ A2:A12”)。Find(What:=“ Bangalore”)Rng.Find What:=“ Bangalore” CellAddress = Rng.Address MsgBox CellAddress Set Rng = Range(“ A2:A12”)。FindNext(Rng)CellAddress = Rng.Address MsgBox CellAddress End Sub
步骤#12 – 运行宏,然后在第一个消息框中查看我们得到的内容。
步骤#13 – 第一个消息框显示在单元格A5中找到的值“班加罗尔”,单击“确定”按钮以查看下一个找到的值。
在A7单元格中找到第二个值,按“确定”继续。
VBA查找下一个(使用循环)
它将退出VBA子过程,但在单元格A10中还有一个。如果要在多个单元格中找到值,则最好使用循环。
在这种情况下,我们在多个单元格中都具有“班加罗尔”值,因此我们需要在此处包括循环。
步骤14 – 首先,声明两个变量作为范围。
代码:
Sub RangeNext_Example1()Dim Rng作为范围Dim FindRng作为Range结束Sub
第15步– 设置第一个变量的参考,如下所示。
代码:
Sub RangeNext_Example1()Dim Rng作为范围Dim FindRng作为范围集Rng = Range(“ A2:A11”)。Find(What:=“ Bangalore”)End Sub
步骤#16 – 对于第二个变量,请使用FIND VBA函数设置参考。
Sub RangeNext_Example1()Dim Rng作为范围Dim FindRng作为范围Set Rng = Range(“ A2:A11”)。Find(What:=“ Bangalore”)Set FindRng = Rng.FindNext(“ Bangalore”)End Sub
步骤#17 – 在开始搜索值之前,我们需要确定从哪个单元格开始搜索,因为该操作将变量声明为字符串。
代码:
Sub RangeNext_Example1()Dim Rng作为范围Dim FindRng作为范围Set Rng = Range(“ A2:A11”)。Find(What:=“ Bangalore”)Set FindRng = Rng.FindNext(“ Bangalore”)Dim FirstCell as String FirstCell = Rng.Address结束子
步骤18 – 为此变量分配第一个单元地址。
代码:
Sub RangeNext_Example1()Dim Rng作为范围Dim FindRng作为范围Set Rng = Range(“ A2:A11”)Set FindRng = Rng.Find(What:=“ Bangalore”)Dim FirstCell as String FirstCell = Rng.Address End Sub
步骤#19 – 现在,我们需要包括“ Do While”循环,以循环遍历所有单元格并找到搜索值。
代码:
Sub RangeNext_Example1()Dim Rng作为范围Dim FindRng作为范围Set Rng = Range(“ A2:A11”)。Find(What:=“ Bangalore”)Set FindRng = Rng.FindNext(“ Bangalore”)Dim FirstCell as String FirstCell = Rng.Address在FirstCell Cell.Address End Sub时循环
在循环中提到消息框和VBA FIND NEXT方法。
步骤#20 – 以下是为您提供的完整代码。
代码:
Sub FindNext_Example()Dim FindValue作为字符串FindValue =“ Bangalore” Dim Rng作为范围集合Rng = Range(“ A2:A11”)Dim FindRng作为范围集合FindRng = Rng.Find(What:= FindValue)Dim FirstCell作为字符串FirstCell = FindRng.Address做MsgBox FindRng.Address设置FindRng = Rng.FindNext(FindRng)循环而FirstCell FindRng.Address MsgBox“ Search over” End Sub
步骤#21 – 这将继续显示所有匹配的单元格地址,最后,在新消息框中将消息显示为“搜索结束”。
要记住的事情
- FIND方法一次只能找到一个值。
- excel VBA中的FIND NEXT可以从已找到的值单元格中找到下一个值。
- 使用Do While循环可遍历范围内的所有单元格。