4.5.2-代码解析:L1_Sub_生成个人档案¶
该过程实现的功能如下:
1)对员工的姓名进行循环遍历
2)将每名员工的姓名作为参数传到下一个函数
3)将以上函数的返回值写入到首页每名员工对应的C列,提示在生成档案过程有没有遇到问题
代码如下
1 Sub L1_Sub_生成个人档案()
2 Set shtFirst = ThisWorkbook.Worksheets("操作界面")
3 maxRow = shtFirst.Cells(Rows.Count, "B").End(xlUp).Row
4 If maxRow > 2 Then
5 For i = 3 To maxRow Step 1
6 employeeName = shtFirst.Cells(i, "B")
7 If employeeName <> "" Then
8 tips = "正在生成个人档案:" & employeeName
9 Debug.Print (tips)
10 returnTips = L11_Fun_createPersonalFile(employeeName)
11 shtFirst.Cells(i, "C") = returnTips
12 End If
13
14 Next i
15 Else
16 MsgBox "请输入员工姓名"
17 End If
18 End Sub
代码中文解析
1 Sub L1_Sub_生成个人档案()
2 定义工作表shtFirst,表示操作界面工作表
3 获取shtFirst工作表B列的最大非空行maxRow
4 判断开始:如果maxRow大于2成立
5 循环开始:i从3开始,每次循环加1,直到i=maxRow
6 设置员工姓名为shtFirst的第i行第B列
7 判断开始:如果员工姓名不为空条件成立
8 设置变量tips为"正在生成个人档案:员工姓名",其中员工姓名每次循环从i行B列获取
9 在VBE的立即窗口显示变量tips的取值
10 执行函数L11_Fun_createPersonalFile,并将员工姓名为作为传递参数,函数返回值为returnTips
11 shtFirst工作表第i行第C列输入变量returnTips的取值
12 判断结束
13
14 循环结束
15 其它:
16 弹窗显示"请输入员工姓名"
17 判断结束
18 End Sub
关键代码解读
1)第4行: If maxRow > 2 Then。在循环前需要判断用户是否有输入员工姓名到B列,我们在写代码的过程中,需要考虑到用户可能的不规范操作,从代码上兼容这些操作,也就是所谓代码的鲁棒性。
2)第8行: tips = "正在生成个人档案:" & employeeName。字符串的连接使用&。当字符串在不同条件下显示的结果不一样,需要将其中的变化部分定义成变量的形式,使用&连接字符串的常量及变量部分。
3)第10行: returnTips = L11_Fun_createPersonalFile(employeeName)。调用Sub时,我们采用Call Sub名称,对于无返回值的Function,也可以使用Call 函数名的方式。对于需要使用函数返回值的时候,将函数赋值给一个变量即可,该变量的取值即为函数的返回值。