4.5.5-代码解析:L112_Fun_考核成绩¶
该函数的功能是从考核成绩中获取该员工的成绩,因为存在多次考核结果,所以需要遍历该工作表,找到每一个成绩,逐一写入到生成的员工档案中。代码核心逻辑如下:
1)清空员工档案模板中的原数据
2)对考核成绩工作表进行循环,找到该员工的成绩
3)设置一个初始列号,每写入一个信息,列号+1,确保信息逐一写入
代码如下
1 Function L112_Fun_考核成绩(shtOutput, employeeName)
2 ' 清空原数据
3 shtOutput.Range("J10:O11").ClearContents
4
5 Set sht = ThisWorkbook.Worksheets("考核成绩")
6 maxRow = sht.Cells(Rows.Count, "B").End(xlUp).Row
7
8 col = 10
9 flag = 0
10 For i = 2 To maxRow Step 1
11 employeeNameDB = sht.Cells(i, "B")
12 If employeeNameDB = employeeName Then
13 yearInfo = sht.Cells(i, "C")
14 noteInfo = sht.Cells(i, "D")
15
16 shtOutput.Cells(10, col) = yearInfo
17 shtOutput.Cells(11, col) = noteInfo
18
19 col = col + 1
20
21 flag = 1
22 End If
23 Next i
24
25 If flag = 1 Then
26 returnTips = "找到人员考核成绩"
27 Else
28 returnTips = "未找到人员考核成绩"
29 End If
30
31 L112_Fun_考核成绩 = returnTips
32
33 End Function
关键代码解读
1)第8行:col = 10。这部分目标是为显示图4-23的柱状图,柱状图的数据区域是J10-O12,只需要更新这部分数据即可。也就是说数据是从第10列(J列)开始录入的,所以在这里我们设置了一个初始值,每增加一个新的值列号+1,第19行实现了这部分功能,col = col + 1。其实在本示例中假设柱状图关联的数据范围是固定的,也就是说如果有多次考核成绩,超过J10-O12区域,那么超过的区域是无法在柱状图中显示的,这个跟想要的显然有一段差距。这里我们就需要新增一个功能,就是动态变化柱状图关联的单元格区域。这一部分功能在后续再介绍。
2)第9行,flag = 0。我们查找某员工的考核成绩时,有一种可能是该员工可能刚入职,没有考核成绩,所以需要一个标识符flag,告知是否至少找到一个考核成绩。第21行,flag = 1,告诉后续环节找到了一个成绩。后续只需通过判断flag的值就可以区分是否有考核成绩被找到。
