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循环可遍历范围内的所有单元格。