第55~56讲-find 方法与findNext方法

第55~56讲-find 方法与findNext方法1·单元格区域的find方法:Find方法在区域内查找某值的第一个单元格,注意返回找到的单元格对象Find方法只且永远返回该区域第一个匹配的对象·查找下一个需要使用FindNext或者FindPreous方法2查找就会有两个结果的可能,找到或者找不到·如果找到自然会返回找到的单元格对象·如果没有找到,则是该对象的初始状态Nothing什么都不是,注意:不能使用=来判断是否Nothing-要用对象判断的特定符号is来判断。·请注意Nothing不是False判断时应该使用not对象is

1 ·单元格区域的find方法:
Find方法在区域内查找某值的第一个单元格,注意返回找到的单元格对象
Find方法只且永远返回该区域第一个匹配的对象
·查找下一个需要使用FindNext或者FindPreous方法
2 查找就会有两个结果的可能,找到或者找不到
·如果找到自然会返回找到的单元格对象
·如果没有找到,则是该对象的初始状态Nothing什么都不是,
注意:不能使用=来判断是否Nothing-要用对象判断的特定符号is 来判断。
·请注意Nothing不是False 判断时应该使用not对象is nothing来判断单元格存在与否,而不是ls not Nothing.

’Nothing 不是一个固定态,它不等于任何的某一个值,不是精确匹配的概念不能使用=匹配
‘对象 is Nothing 返回 True or False
‘如果对象是Nothing is Nothing ===> True
‘如果对象不是Nothing Not is Nothing ===>Ture
‘典型的错误 is Not Nothing

Sub find方法()
    Dim rng As Range
    Set rng = Range("a1").CurrentRegion.Find("王新刚")
    If Not rng Is Nothing Then
        MsgBox rng.Address(0, 0)
    Else
        MsgBox "没有找到该单元格"
    End If
End Sub

3 FindNext 的用法
FindNext方法必须在find方法之后使用才有实际意义,FindNext(after:=单元格对象),代表从某一个单元格对象之后开始查找,查找条件是在Find方法中设定的查找的值。
FindNext的循环查找特性,就是当找到区域中的最后一个符合条件的单元格对象之后继续执行FindNext不会返回Nothing,而是返回区域的开头进行循环查找。
·为了避免查到重复的记录,通常需要用单元格的唯一的地址作为标识,即在查到第一个符合的对象时,把该单元格的地址记录下来。然后在循环查找中,如果发现单元格的地址与该记录的地址相同,则表示已经查找回去到第一条记录了。

'需求:王新刚的销售总额
'问题:如何查找下一个,而不是只查找第一个
'FindNext 从上向下找,FindPrevious 从下向上找
'这两个方法都是依附于Find 方法的
'FindNext(after:=单元格对象)
'FindNext 是循环查找的,永远不会返回Nothing
'FindNext 循环查找会有重复多找一次的问题,我们在实际应用中一定要意识到这一点
Sub 王新刚销售额()
    Dim rng As Range, sum As Long
    Set rng = Range("a1").CurrentRegion.Find("王新刚")
    If Not rng Is Nothing Then
        sum = sum + rng.Offset(, 4)
        Debug.Print rng.Address(0, 0)
        Set rng = Range("a1").CurrentRegion.FindNext(rng)
        Debug.Print rng.Address(0, 0)
        sum = sum + rng.Offset(, 4)
        Debug.Print sum
    End If
End Sub
Sub 王心刚销售额2()
    Dim rng As Range, area As Range, faddress As String, sum As Long
    Set area = Range("a1").CurrentRegion
    Set rng = area.Find("王心刚")
    If Not rng Is Nothing Then
        sum = rng.Offset(, 4)
        faddress = rng.Address
        Do
            Set rng = area.FindNext(rng)
            If rng.Address <> faddress Then _
                  sum = sum + rng.Offset(, 4)
           
        Loop Until rng.Address = faddress
'        sum = sum - Range(faddress).Offset(, 4)
    End If
    Debug.Print sum
End Sub

今天的文章第55~56讲-find 方法与findNext方法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24435.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注