Find

在指定列中查找指定的字符内容,如果找到,返回行的位置,否则返回-1。
如果Table处在汇总模式下,计算行位置的时候,分组行不包括在内。

语法:

Find(StrFind, RowStart, Col, caseSensitive, fullMatch, Wrap)
Find(StrFind, RowStart, ColName, caseSensitive, fullMatch, Wrap)

下表是参数说明:

参数 说明
StrFind 字符型,要查找的内容
RowStart 整数型,从此行开始查找
Col 整数型,指定要查找的列的位置,也可以是字符型,指定要查找的列的名称。
ColName 字符型,要查找的列的名称。
caseSensitive 逻辑型,是否区分大小写
fullMatch 逻辑型,是否完全匹配,如果设为False,那么查找“北京”,“北京市”也符合要求。
Wrap 逻辑型,是否循环查找。如果设为True,从RowStart指定的行开始查找,一直找到最后一行, 如果还是没有找到符合条件的行,那么就从第一行开始重新查找。

示例一

在第一列查找“abc”,不区分大小写,不用完全匹配:

With CurrentTable
    Dim
r As Integer
   
r = .Find("abc", 0, 0, False, False, True)
    If
r > - 1 Then '如果找到符合条件的行
        .
Position = r '则选择该行

    End If
End With

示例二

上面的代码,只能定位到第一个符合条件的行。
如果我们需要循环查找,可以参考下面的代码:

With CurrentTable
    Dim
r As Integer
    r = .Find(
"abc", .RowSel + 1, 0, False, False, True)
    If
r > - 1 Then '如果找到符合条件的行  
       
.Position = r  '则选择该行
    End
If
End
With

请在当前表的第一列输入一些内容(别忘记要输入一些“abc”),然后将上述代码复制到命令窗口,反复单击“执行”按钮,进行测试。
上面的代码,每次都从下一行开始查找,如果没有找到,则重新从第一行开始查找,所以能够实现循环查询。

示例三

也可以用列名称来指定要查找的列,例如在订单表的产品列查找产品为"PDO1"的行:

With Tables("订单")
    Dim
r As Integer
    r = .Find("PD01", .RowSel + 1, "产品", False, False, True)
    If r > - 1 Then '如果找到符合条件的行
       
.Position = r '则选择该行
   
End If
End
With


本页地址:http://www.foxtable.com/webhelp/topics/0552.htm