员工管理 根据编号查询3

前面两节通过Find方法与While循环实现查找,本节通过For循环实现查找。


1 主要步骤

步骤1:校验存储表中是否有数据

步骤2:For遍历所有数据行

步骤3:判断当前行的ID是否所查ID,是则进行相应赋值


2 完整代码

Sub load3()
  Dim id As String
  Dim rowIndex As Integer      '循环变量
  Dim rowIndexLast As Long '最后一行的行数
  Dim flag As Boolean     '标志,表示是否找到数据
  flag = False

  '步骤1:校验存储表中是否有数据
  If IsEmpty(Worksheets("A01员工").Range("A2").Value) Then
    MsgBox "当前表中没有数据", Title:="小步教程 www.xiaobuteach.com"
    Exit Sub
  End If
 
  '步骤2:For遍历所有数据行
  '获取要查找的ID
  id = Worksheets("B01员工管理").Range("B6").Value
  '获取末行的行数
  rowIndexLast = Worksheets("A01员工").Range("A1").End(xlDown).Row

  '遍历
  For rowIndex = 2 To rowIndexLast
     '步骤3:判断当前行的ID是否所查ID,是则进行相应赋值
    If Worksheets("A01员工").Range("A" & rowIndex).Value = id Then     
      Worksheets("B01员工管理").Range("C6:G6").Value = Worksheets("A01员工").Range("B" & rowIndex & ":F" & rowIndex).Value
      flag = True
      MsgBox "查询完成", Title:="小步教程www.xiaobuteach.com"
      Exit For
    End If
  Next

  If Not flag Then
    MsgBox "没有找到数据,查询失败。ID:" & id
  End If

End Sub

3 代码讲解

Range.End方法使用注意事项

如果[A01员工]中没有数据,只有表头,直接通过End方法查找最后一行会取得数值:1048576,为Long类型;如果赋值给Integer类型,会报错“溢出”。所以之前要进行表中是否存在数据的校验。


4 测试用例

正常用例:当数据存储表[A01员工]存在要查询的ID时,[B01员工管理]正常显示结果。

异常用例1:当数据存储表[A01员工]为空时,提示“当前表中没有数据”

异常用例2:当数据存储表[A01员工]存在数据,但查询的ID不存在时,提示“没有找到数据,查询失败。ID:*******”