ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA一次性生成多份体检表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-11-6 20:26 | 显示全部楼层
在当前工作表文件路径下生成”体检表“文件夹,将生成的体检表放在该文件夹中。
因有重名(刘婷),故以工号+姓名来命名生成的体检表文件。
image.png
image.png
image.png

体检表生成VBA求助.7z

95.37 KB, 下载次数: 33

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-7 08:46 | 显示全部楼层
ykcbf1100 发表于 2024-11-6 16:21
第8项内容有点可怕啊,体检结果居然是取随机值,这么不负责任的吗?

20年前还有在论坛问随机分奖金做账的

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-7 14:29 | 显示全部楼层
excel玉米 发表于 2024-11-6 20:26
在当前工作表文件路径下生成”体检表“文件夹,将生成的体检表放在该文件夹中。
因有重名(刘婷),故以工 ...

请取消所有日期的取值,简化VBA
微信截图_20241107142728.png

TA的精华主题

TA的得分主题

发表于 2024-11-7 15:46 | 显示全部楼层
这案例很有用,能生成独立的个人报表,如表式工资条、体检表、履历表、个人档案等。谢谢写代码的老师,辛苦了!

TA的精华主题

TA的得分主题

发表于 2024-11-7 16:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
用vba难度不高

TA的精华主题

TA的得分主题

发表于 2024-11-7 19:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
xiashuming1 发表于 2024-11-7 14:29
请取消所有日期的取值,简化VBA

自己找到相应的代码块,将其注释掉或者删掉即可。
image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-7 22:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
参与一下!!!!!!!!

体检表生成软件(240616).rar

243.16 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2024-11-8 20:18 | 显示全部楼层
这是测试运行的结果。我只选了前面10个人
4a0f05e58429e6bd9d7e9090439f238.jpg

TA的精华主题

TA的得分主题

发表于 2024-11-8 20:19 | 显示全部楼层
Sub zidong()
Dim i, j, k, m, n, irow, s, p, q, t
Dim arr
irow = Sheets("花名册").[a65536].End(xlUp).Row
arr = Sheets("花名册1").Range("a1:m" & irow)
For i = 2 To irow
    Sheets("体检表").Cells(13, 5) = arr(i, 3)
    Sheets("体检表").Cells(15, 5) = arr(i, 4)
    Sheets("体检表").Cells(17, 5) = arr(i, 5)
    Sheets("体检表").Cells(19, 5) = arr(i, 11)
    Sheets("体检表").Cells(23, 5) = arr(i, 12)
    Sheets("体检表").Cells(28, 5) = arr(i, 13)
    j = j + 202406220021#
    Sheets("体检表").Cells(53, 3) = j
    For k = 56 To 57
      m = Split(Sheets("体检表").Cells(k, 8), "-")(0)
      n = Split(Sheets("体检表").Cells(k, 8), "-")(1)
      s = Application.WorksheetFunction.RandBetween(m, n)
      Sheets("体检表").Cells(k, 3) = s
    Next

    For k = 89 To 96
    m = Split(Sheets("体检表").Cells(k, 8), "-")(0)
    n = Split(Sheets("体检表").Cells(k, 8), "-")(1)
    If Val(m) = Int(m) And Val(n) = Int(n) Then
      s = Application.WorksheetFunction.RandBetween(m, n)
       Sheets("体检表").Cells(k, 3) = s
      Else
       p = Len(m) - InStr(m, ".")
       q = Len(n) - InStr(n, ".")
       t = Application.WorksheetFunction.Max(p, q)
       s = Application.WorksheetFunction.RandBetween(m * 10 ^ t, n * 10 ^ t)
       Sheets("体检表").Cells(k, 3) = s / 10 ^ t
       End If
    Next
    For k = 211 To 255
     If Sheets("体检表").Cells(k, 8) <> "" And Sheets("体检表").Cells(k, 9) = "" Then
     m = Split(Sheets("体检表").Cells(k, 8), "-")(0)
     n = Split(Sheets("体检表").Cells(k, 8), "-")(1)
      If Val(m) = Int(m) And Val(n) = Int(n) Then
       s = Application.WorksheetFunction.RandBetween(m, n)
       Sheets("体检表").Cells(k, 3) = s
       Else
        p = Len(m) - InStr(m, ".")
        q = Len(n) - InStr(n, ".")
        t = Application.WorksheetFunction.Max(p, q)
        s = Application.WorksheetFunction.RandBetween(m * 10 ^ t, n * 10 ^ t)
        Sheets("体检表").Cells(k, 3) = s / 10 ^ t
       End If
     End If
    Next
    Sheets("体检表").Copy
   ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & arr(i, 3) & "体检表" & ".xlsx"
   ActiveWorkbook.Close True
Next
End Sub

TA的精华主题

TA的得分主题

发表于 2024-11-8 20:22 | 显示全部楼层
仅供参考,欢迎批评指正

体检表生成VBA求助2.rar

95.17 KB, 下载次数: 5

初步结果

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 16:03 , Processed in 0.042818 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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