ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: hank2611

[分享] 一个非常实用的成绩管理系统 ___ VBA 学习的实例

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-3-31 21:28 | 显示全部楼层
感觉很不错的,用起来界面很好的说

TA的精华主题

TA的得分主题

发表于 2009-3-31 21:34 | 显示全部楼层
不错,虽然用不上,下载来学习一下。多谢楼主

TA的精华主题

TA的得分主题

发表于 2009-4-1 02:19 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-4-1 07:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-4-1 07:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
下载来学习一下。多谢楼主

TA的精华主题

TA的得分主题

发表于 2009-4-1 07:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主了,能不能说一说修改人数的方法,这样就能让大家学以致用~~

TA的精华主题

TA的得分主题

发表于 2009-4-1 07:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
下面是我用ALT+F11打开时,定义函数的内容:
Sub Auto_Open()
    Application.Calculation = xlManual
    Sheets("原数据").Select
   
   ' MsgBox "通过本系统将使你的工作更加轻松!", vbInformation, "欢迎使用成绩管理系统"
     Call dymc '定义名称函数
     Call hide
    UserForm1.Show
   

End Sub
Function Zm()
'定义函数 : 计算总分,班级排名,年级排名

Range("N3").Select
    ActiveCell.FormulaR1C1 = "=SUM(RC[-9]:RC[-1])"
    Selection.AutoFill Destination:=Range("OFFSET(原数据!$N$3,0,0,COUNTA(原数据!$A:$A)-2,1)"), Type:=xlFillDefault
    ActiveSheet.Calculate
    Range("O3").Select
    ActiveCell.FormulaR1C1 = "=SUMPRODUCT((班级=RC[-13])*(总分>RC[-1]))+1"
    Selection.AutoFill Destination:=Range("OFFSET(原数据!$O$3,0,0,COUNTA(原数据!$A:$A)-2,1)"), Type:=xlFillDefault
    Range("P3").Select
    ActiveCell.FormulaR1C1 = "=RANK(RC[-2],总分)"
    Selection.AutoFill Destination:=Range("OFFSET(原数据!$P$3,0,0,COUNTA(原数据!$A:$A)-2,1)"), Type:=xlFillDefault
    ActiveSheet.Calculate
    Range("OFFSET(原数据!$N$3,0,0,COUNTA(原数据!$A:$A)-2,3)").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
End Function
Function paixu()
'定义排序函数 : 使成绩按总分降序排列

   
    Call Quxiao_shaixuan
Range("OFFSET(原数据!$A$2,0,0,COUNTA(原数据!$A:$A)-1,COUNTA(原数据!$A$2:$BB$2))").Sort Key1:=Range("N3"), Order1:=xlDescending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        SortMethod:=xlPinYin, DataOption1:=xlSortNormal
        
    Range("A3").Select
End Function

Function dymc()
'定义名称
ActiveWorkbook.Names.Add Name:="班级", RefersTo:="=原数据!$B$3:$B$3300"
ActiveWorkbook.Names.Add Name:="姓名", RefersTo:="=原数据!$C$3:$C$3300"
ActiveWorkbook.Names.Add Name:="保优", RefersTo:="=原数据!$D$3:$D$3300"
ActiveWorkbook.Names.Add Name:="语文", RefersTo:="=原数据!$E$3:$E$3300"
ActiveWorkbook.Names.Add Name:="数学", RefersTo:="=原数据!$F$3:$F$3300"
ActiveWorkbook.Names.Add Name:="英语", RefersTo:="=原数据!$G$3:$G$3300"
ActiveWorkbook.Names.Add Name:="物理", RefersTo:="=原数据!$H$3:$H$3300"
ActiveWorkbook.Names.Add Name:="化学", RefersTo:="=原数据!$I$3:$I$3300"
ActiveWorkbook.Names.Add Name:="生物", RefersTo:="=原数据!$J$3:$J$3300"
ActiveWorkbook.Names.Add Name:="政治", RefersTo:="=原数据!$K$3:$K$3300"
ActiveWorkbook.Names.Add Name:="历史", RefersTo:="=原数据!$L$3:$L$3300"
ActiveWorkbook.Names.Add Name:="地理", RefersTo:="=原数据!$M$3:$M$3300"
ActiveWorkbook.Names.Add Name:="总分", RefersTo:="=原数据!$N$3:$N$3300"
ActiveWorkbook.Names.Add Name:="班名", RefersTo:="=原数据!$O$3:$O$3300"
ActiveWorkbook.Names.Add Name:="年名", RefersTo:="=原数据!$P$3:$P$3300"
End Function

Function Quxiao_shaixuan()
If Worksheets("原数据").FilterMode = True Then
    'MsgBox "Filter mode is on"
    Selection.AutoFilter
     Range("B1").Select
    ActiveCell.FormulaR1C1 = _
        "=MID(CELL(""filename""),SEARCH(""["",CELL(""filename""))+1, SEARCH(""]"",CELL(""filename""))-SEARCH(""["",CELL(""filename""))-5)&""总成绩单"""

Else
End If
Range("A3").Select
End Function





Sub hide()
'
' 隐藏

'
    Range("D2").Select
    Selection.EntireColumn.Hidden = True
End Sub




Sub shijian()
If Hour(Now) > 22 Then
UserForm1.Label22 = Now & "  夜深了,请注意休息!"
  ElseIf Hour(Now) > 19 Then
  UserForm1.Label22 = Now & " 晚上好! "
   ElseIf Hour(Now) > 12 Then
  UserForm1.Label22 = Now & " 下午好! "
ElseIf Hour(Now) > 6 Then
UserForm1.Label22 = Now & " 上午好! "
ElseIf Hour(Now) > 4 Then
UserForm1.Label22 = Now & " 你来的好早啊! "
ElseIf Hour(Now) > 0 Then
UserForm1.Label22 = Now & " 你的精力真充沛!很晚了,注意休息! "
End If
'Application.OnTime Now + TimeValue("00:00:01"), "shijian"
End Sub

Function banjipaixu()
'Call Quxiao_shaixuan
Sheets("原数据").Select
Range("OFFSET(原数据!$A$2,0,0,COUNTA(原数据!$A:$A)-1,COUNTA(原数据!$A$2:$BB$2))").Sort Key1:=Range("b3"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        SortMethod:=xlPinYin, DataOption1:=xlSortNormal
        
        
   
End Function


要是增加或减少人数的话,是不是将  RefersTo:="=原数据!$B$3:$B$3300"   中的数列原数据!$B$3:$B$3300增加或者减少就OK了,还有没有其他地方要改动的呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-4-1 08:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不错,只要该3300就可以了 。把它改成 总人数 + 2,

TA的精华主题

TA的得分主题

发表于 2009-4-1 10:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-4-1 10:45 | 显示全部楼层
打印其弹出窗口的内容啊,即点击“成绩管理”弹出窗口的内容啊?能不能实现啊?楼主!!!!!!要是能实现就好了啊!!!!!!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 03:26 , Processed in 0.042064 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表