excel:VBA问题,帮忙完成代码,精简代码?

摘要:学校各班进行周末留校学生统计时,普遍存在统计过程烦琐、不易修改及考勤表信息错漏率高等问题。为解决这类问题,使用Excel VBA语言编写了考勤表自动生成程序,实现了留校统计过程的简化及考勤表制表过程的全自动化,有效提高了考勤统计工作的效率及规范性。

关键词:考勤表;统计界面;自动生成;算法选择;Excel;VBA

中图分类号:TP311 文献标识码:A

笔者所在学校实行双周自愿留校制度,每次留校前要求各班统计留校学生并分别打印上交男、女生考勤表。惯例上,各班负责人需将申请留校的学生及其信息统计后逐个键入考勤表。这一过程的突出问题表现为填表效率低、易忘记修改周数,且有学生欲变更留校时不便于改动。若能依托各班教室内配备的多媒体计算机,直接在计算机上完成统计工作并把制表工作交由计算机自动完成,则可大幅度优化工作流程、提高工作速度与灵活性,减轻各班负责人的工作负担,同时增强考勤表的规范性,具有一定的现实意义。为此,设计了基于Excel VBA语言的考勤表自动生成程序。

本程序需要整合留校学生统计与考勤表自动生成这两项功能,分别由统计程序与考勤表生成程序实现。班级花名册被嵌入程序所在工作表作为统计程序界面(图1),使用者只需在多媒体的触摸屏上单击欲留校者的姓名,相应单元格即被填充颜色,表示已被记录;当学生临时决定取消留校时,只需再次单击对应单元格即可。统计完毕后,在操作界面上填写并确认周数等信息,按下“生成考勤表”按钮,考勤表生成程序即根据统计信息自动输出格式统一的考勤名单。

3.1 统计程序的设计

统计程序的记录功能由工作表SelectionChange事件触发。此事件中,程序仅仅完成单元格填充颜色的更改,而不涉及留校人数计算等其他工作,可提高执行速度。由于针对男、女生的事件代码只存在调用列号之间的差异,故下面只给出针对男生一列的程序代码:

Case Is = 2 ‘选择男生所在列时继续执行

3.2 考勤表生成程序的设计

3.2.1 数据整理传递算法的选择

由于所统计的学生在縱列上往往是不连续的(参见图1),因此将以填充颜色方式记录的学生信息传递到模板考勤表中时,不能直接使用粘贴方法,而需要设计一定的算法进行数据的连续化整理再进行传递。最初设计时,提出了如下两种可行的数据整理传递算法:

为选出运行效率最高的算法,针对这两种算法分别进行了运行耗时测试。由于在VBA开发环境中无法直接对单次运行精确计时,本测试采用了While循环将每种算法重复执行多次并通过MsgBox函数返回精确到秒的总运行时间。其测试结果如表1所示。

由测试结果可见,算法B运行效率远高于算法A。又考虑到算法B可减少工作表切换时的闪屏现象,故程序选择算法B进行数据的整理与传递。

3.2.2 界面与代码设计

考勤表生成程序的操作界面如图3所示。使用者确认考勤表关键信息后,按下按钮程序即生成考勤表。文本框内的信息在首次输入后将保持不变,周号信息可通过SpinButton控件快速更改,方便同一班级连续使用。

下面展示的是程序核心控件“生成考勤表”按钮的Click事件对应代码。同样地,由于整理传递男、女生信息的算法代码十分相似,故仅给出处理男生信息的相应代码。

‘声明算法中调用的动态字符串数组

使用图1、图2中所示信息,程序自动生成的留校考勤表(女生)如图4所示。

可以看到,程序生成的考勤表格式规范、信息准确。实际投入使用以来,本程序显著提高了工作质量,获得了学校好评。

考勤表自动生成程序的实现,克服了一直以来各班手动填写考勤表的种种弊端,有效实现了考勤表制表过程的简化、自动化与规范化,推动了班级管理工作的进步,体现了Excel VBA语言在教育信息化时代的重要作用。掌握并善于使用Excel VBA语言编写程序、解决问题,必将助推学校各项工作迈上新的台阶。

[2] 石晓玲,杨立功.基于ExcelVBA及函数的成绩上报单的制作[J].泰州职业技术学院学报,2011,11(5):40-42.

}

excel中制作工资表虽然很简单,但是如果使用VBA宏代码可以更方便的完成,虽然这种方法很少使用但是确实很方便,下面分享用VBA快速制作工资条的详细教程,需要的朋友可以参考下

前段时间给大家写过“如何使用Excel的定位功能快速制作工资条”和“如何制作双行成绩单”这样的经验,使用了两种不同的方法。下面再给大家介绍一种使用VBA宏代码制作的方法(以制作工资条为例)。

1、例如有如下图所示的工资表。

2、在工资表标题行上方插入一空行(如下图所示)。

3、选中顶部第一行空白区域(A1:G1),设置边框为上下框线(如下图所示)。

4、单击菜单栏“工具”—“宏”—“Visual Basic编辑器”或直接按下Alt+F11快捷键打开VBA编辑窗口。

5、打开的VBA窗口如下图所示。

6、单击菜单栏“插入”—“模块”。

7、打开模块,并在模块中输入下列代码:

备注:公式可以根据实际情况来修改哦。

8、保存后,可以单击“运行子过程”按钮,就会在每个工资行上添加上标题行。

9、现在效果如下图所示。

10、删除掉前三行,最后的效果如下所示。

}

我正在编写一些VBA代码,在打开excel文件时动态设置某些图表的属性,比如数据范围.这是因为我用来从我的.Net项目导出Excel的库不完全支持图表属性.

我在这个文件中有4张图表和1张数据表.

但是,在第一次打开文件时,会显示以下错误:

(另外,在第一次打开时,会显示一条警告,说该文件可能不安全,我手动必须允许打开,但我不确定这是否与此问题有任何关系)

此文件的后续打开不会触发错误.

  1. 我没有让我的代码的某些部分完全合格吗?
  2. 是否有任何其他可能的原因导致此错误,如果是,它们如何解决?
}

我要回帖

更多关于 vba代码大全入门 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信