员工管理 根据编号查询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:*******”