|
做了个简易版的,请测试。- Dim brr(), n, p '保存搜索结果、符合条件的记录数,当前显示第几条记录
- Sub 检索()
- xm = [b4]: cs = [b5]: xb = [b6] '姓名、城市、性别
- arr = Sheets(1).[a1].CurrentRegion
- ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))
- n = 0
- For i = 2 To UBound(arr)
- xm1 = arr(i, 3): xb1 = arr(i, 4): cs1 = arr(i, 6)
- If (xm = xm1 Or xm = "") And (xb = xb1 Or xb = "") And (cs = cs1 Or cs = "") Then
- n = n + 1
- For j = 1 To UBound(arr, 2)
- brr(n, j) = arr(i, j)
- Next
- End If
- Next
- If n > 0 Then
- Range("d8,f8,d9,f9,h9,j9,d10,d12,d14,d16,d18") = ""
- Call 显示(1) '显示第一条记录
- p = 1
- Else
- MsgBox "无符合条件的记录"
- End If
- End Sub
- Sub 显示(k) '搜索结果中第k条记录显示出来
- arr = Array("d8", "f8", "d9", "f9", "h9", "j9", "d10", "d12", "d14", "d16", "d18")
- For i = 0 To UBound(arr)
- Range(arr(i)) = brr(k, i + 1)
- Next
- End Sub
- Sub 下一名()
- p = p + 1
- If p <= n Then Call 显示(p) Else p = p - 1: MsgBox "已到最后一条记录"
- End Sub
- Sub 上一名()
- p = p - 1
- If p > 0 Then Call 显示(p) Else p = p + 1: MsgBox "已到第一条记录"
- End Sub
复制代码 |
|