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 函数名的方式。对于需要使用函数返回值的时候,将函数赋值给一个变量即可,该变量的取值即为函数的返回值。