MSCBSC 移动通信论坛
搜索
登录注册
网络优化工程师招聘专栏 4G/LTE通信工程师最新职位列表 通信实习生/应届生招聘职位

  • 阅读:20142
  • 回复:1
【例子】第三讲 Excel对象综合应用例子
郑东文

鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

积分 140
帖子 27
威望 19571 个
礼品券 0 个
专家指数 5
注册 2019-1-2
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2019-12-14 17:02:57  只看楼主 

已知某年段学生期末成绩表如图,现需写一个可按学号查询学生成绩的宏,要求如下:

1)支持一次查询多个学号记录

2)反馈查询结果,结果分查到和未查到两种情况3)为每条查询到的成绩记录单独创建一个WorkBook来保存并按学号加日期命名文件,保存成绩的工作表按学号命名。

image.png

image.png

'源代码

第三讲 例子.rar

'按学号批量查询成绩

Sub SearchScoreBySn()

Dim intR As Integer '行号

Dim intC As Integer '列号

Dim Col_SearchSn As New Collection '查询学号集合

Dim intColIndex As Integer '集合下标

Dim Dic_Score   As Object '成绩字典

Dim strSerRes As String '查询结果

Dim Wb_SerRec As Workbook '保存查询记录工作簿

Dim Ws_SerRec As Worksheet '保存查询记录工作表

Dim strFileName As String '保存文件名

'>>>读取查询学号>>>

intR = 2

Do While (Sheet2.Cells(intR, 1) <> "") '判断是否读到最后一行

    Col_SearchSn.Add Sheet2.Cells(intR, 1) '添加到查询学号集合

    intR = intR + 1

Loop

'<<<读取查询学号


'>>>创建成绩字典>>>

intR = 2

Set Dic_Score = CreateObject("scripting.dictionary")

Do While (Sheet1.Cells(intR, 1) <> "") '判断是否读到最后一行

    Dic_Score.Add CStr(Sheet1.Cells(intR, 1)), intR '以学号为关键字,学号所在行为值

    intR = intR + 1

Loop

'<<<创建成绩字典<<<


'>>>查询成绩并输出>>>

For intColIndex = 1 To Col_SearchSn.Count

    If Dic_Score.exists(CStr(Col_SearchSn(intColIndex))) Then '查询指定学号的成绩是否存在

       strSerRes = "查到"

       Set Wb_SerRec = Workbooks.Add ' wb_serrec指向新创建工作簿

       Set Ws_SerRec = Wb_SerRec.Sheets(1) 'ws_serrec指向wb_serrec第一个工作表

       Ws_SerRec.Name = CStr(Col_SearchSn(intColIndex)) '工作表名称命名为学号

       intC = 1

       intR = Dic_Score(CStr(Col_SearchSn(intColIndex)))

       Do While (Sheet1.Cells(1, intC) <> "")

          Ws_SerRec.Cells(1, intC) = Sheet1.Cells(1, intC) '把成绩表的标题字段赋值到ws_serrec第一行

          Ws_SerRec.Cells(2, intC) = Sheet1.Cells(intR, intC) '把成绩表的数据赋值到ws_serrec第二行

          intC = intC + 1

       Loop

       strFileName = "D:" & CStr(Col_SearchSn(intColIndex)) & "_" & Date & ".xlsx"

       Wb_SerRec.SaveAs strFileName

       Wb_SerRec.Close

    Else

       strSerRes = "未查到"

    End If

    Sheet2.Cells(intColIndex + 1, 2) = strSerRes '反馈查询结果

Next intColIndex

'<<<查询成绩并输出<<<

End Sub



查看积分策略说明
附件下载列表:
2019-12-14 17:02:40  下载次数: 51
第三讲 例子.rar (26.31 KB)
扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“YD5GAI”免费领取《中国移动:5G网络AI应用典型场景技术解决方案白皮书
  • 2、回复“5G6G”免费领取《5G_6G毫米波测试技术白皮书-2022_03-21
  • 3、回复“YD6G”免费领取《中国移动:6G至简无线接入网白皮书
  • 4、回复“LTBPS”免费领取《《中国联通5G终端白皮书》
  • 5、回复“ZGDX”免费领取《中国电信5G NTN技术白皮书
  • 6、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 7、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 8、回复“5GX3”免费领取《 R16 23501-g60 5G的系统架构1
  • 对本帖内容的看法? 我要点评

     
    hyhy

    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    纪念勋章·七周年  
    积分 2910
    帖子 577
    威望 -12560 个
    礼品券 8 个
    专家指数 25
    注册 2010-6-6
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2019-12-30 17:46:13 
    技术问题,回答得专家指数,快速升级


    QUOTE:
    原帖由 wx_10259334 于 2019-12-14 17:02:57 发表
    已知某年段学生期末成绩表如图,现需写一个可按学号查询学生成绩的宏,要求如下:1)支持一次查询多个学号记录2)反馈查询结果,结果分查到和未查到两种情况3)为每条查询到的成绩记录单独创建一个WorkBook来保 ...

    谢谢楼主分享

    对本帖内容的看法? 我要点评

     

    快速回复主题    
    标题
    内容
     上传资料请点左侧【添加附件】

    (勾选中文件为要删除文件)


    当前时区 GMT+8, 现在时间是 2026-06-27 05:29:41
    渝ICP备11001752号  Copyright @ 2006-2016 mscbsc.com  本站统一服务邮箱:mscbsc@163.com

    Processed in 1.750620 second(s), 18 queries , Gzip enabled
    TOP
    清除 Cookies - 联系我们 - 移动通信网 - 移动通信论坛 - 通信招聘网 - Archiver