这次人事部门调资,要我帮忙设计“调资审批表”,将预先录入好的Excel行员调资数据(一人占一行),转换成每人一页,打印出来。我运用Excel本身的“宏”功能,完成了这种转换,解决了“行记录转换为页报表”这个问题。方法如下: (一)录入好原始数据资料。如“行员调资数据”,一行代表一个人的调资档案资料。 (二)在同一工作薄内新建一个工作表。重命名为“报表页”,设定并调整需打印输出的报表格式,如:“姓名”项目名放在A4,它的动态数据(每人不同)定位在B4,“性别”项目名放在C4,它的动态数据定位在D4。并将某合适位置作为行序号输入框,如A1填提示“行序号”,B1用来输原始表“行员调资数据”的对应行序号。 (三)建立操作按钮。进入菜单-视图-工具栏-Visual Basic,出现VB设计模式(按下[设计模式]按钮),按[控件工具箱]按钮,出现控件图列小窗口,单击[命令按钮],在报表页合适位置单击,可见按钮方块,拉至所需大小。因打印时会同时打印出该按钮,为不影响报表效果,可右击该按钮,在弹出的快捷菜单中选择“设置控件格式→属性”,取消勾选“打印对象”。右击按钮选属性,将Caption属性改为“转换”。 (四)建立“宏”(输入VBA程序)。双击“转换”按钮,出现程序设计画面,插入如下语句: Private Sub CommandButton1_Click() XLS0 = "行员调资数据" End Sub 说明:其中x = Cells(1, 2)表示第一行第二列B1位置用来输入原始表XLS0(“行员调资数据”)的对应行序号;Cells(4, 2) = Sheets(XLS0).Cells(x, 1)表示“报表页”第四行第二列B4的数据自动引用XLS0(“行员调资数据”)的第x行第一列的数据,其余以此类推,把原始表一行的所需项目逐一对应到“报表页”中来。 按“文件-保存”,回到“报表页”,退出设计模式(按[设计模式]按钮使其凸起),关闭有关设计模式的窗口。至此全部准备工作已完成。 如果要转换成“工资条”的形式,则需将上面语句改为: Private Sub CommandButton1_Click() XLS0 = "行员调资数据" End Sub (五)转换。在“报表页”B2位置输入原始表对应的行序号,回车,单击[转换]按钮,即可自动将原始表的指定行数据对应转换到“报表页”中来,打印即可。 注意:若调整了“报表页”的动态数据行列位置,必须在VBA程序中作相应语句的修改。程序不会自动更新。 本文只是告诉了我们一种转换的思路、方法,在很多场合可举一反三,变通使用。可能同事们已有更好的方法,望能交流指导。 |