ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1046|回复: 3

[求助] 求高手帮忙改进下判断语句,数据多判断时间太慢了!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-2-14 01:14 | 显示全部楼层 |阅读模式


代码1如下:这一共有8个一样的判断的,表内数据有3000行,运行起来要好几分钟,那个累!求高手给点好的建议,我这个能实现功能就是慢。
Sub 过期提醒()
Dim a, b, c, d, MST As String, h, i, x, y, z, g, m
c = Sheet2.[P1] '设定科目一时间
d = Sheet2.[R1] '设定分配教练时间
h = Sheet2.[H1] '设定科目二时间
i = Sheet2.[i1] '设定科目三时间
x = Sheet2.[X1] '设定科目四时间
y = Sheet2.[Y1] '设定身份证过期时间
z = Sheet2.[Z1] '设定驾驶证过期时间
g = Sheet2.[g1] '设定技能证过期时间
For i = 3 To Sheet2.UsedRange.Rows.Count
'==================================================科目一提醒
    If Sheet2.[O1] = 1 Then
     If Sheet2.Cells(i, 3).Value > 0 And Sheet2.Cells(i, 13).Value = "" And Sheet2.Cells(i, 4).Value > 0 And Sheet2.Cells(i, 6).Value > 0 Then   '判断《报名时间列是否有报名时间》 和 《是否安排电脑考试》
      a = Date - Sheet2.Cells(i, 3).Value   '计算报名时间距离当天有多久
      If a > c Then                        '报名时间超过《设定时间》弹出窗口提醒!
       ' 'MsgBox "《  " & Sheet2.Cells(i, 4).Value & "  》" & "已经报名" & a & "天了,请尽快了解情况并安排电脑考试!" & Chr(10) & "" & Chr(10) & "身份证号码:" & Sheet2.Cells(i, 6).Value & Chr(10) & Chr(10) & "" & "联系电话:" & Sheet2.Cells(i, 8).Value, 48, "温馨提示窗口"
       aa = "已经报名" & a & "天了,请尽快了解情况并安排电脑考试!"
        Sheet15.Select
x = Range("A65536").End(xlUp).Row + 1 '最后行数
Cells(x, 1) = x - 1
Range("B" & x & ":F" & x) = Array(Sheet2.Cells(i, 3).Value, Sheet2.Cells(i, 4).Value, Sheet2.Cells(i, 6).Value, Sheet2.Cells(i, 8).Value, aa)
Sheet2.Select
        End If
     End If
     End If
    Next i
End Sub

代码2如下:这个总的有6个一样的语句一起判断的,也是功能能实现就是慢。。。
Sub 判断错误()
Dim MST As String, MST1 As String, MST2 As String, MST3 As String, MST4 As String, MST5 As String, MST6 As String
For i = 3 To Sheet2.UsedRange.Rows.Count
'==================================================判断科目一考试时间是否错误
If Sheet2.Cells(i, 13).Value > 0 Then
For x = 1 To 1
Select Case True
Case Application.IsText(Sheet2.Cells(i, 13))
MST = "文本"
Case Application.IsLogical(Sheet2.Cells(i, 13))
MST = "逻辑值"
Case IsNumeric(Sheet2.Cells(i, 13))
MST = "数值"
Case Application.IsErr(Sheet2.Cells(i, 13))
MST = "错误值"
End Select
Next x
If MST = "文本" Or MST = "逻辑值" Or MST = "数值" Or MST = "错误值" Then
''MsgBox "注意:《" & Sheet2.Cells(i, 4).Value & "》的科一时间格式错误,请修改正确的日期!", 16, "温馨提示窗口"
aa = "科一时间格式错误,请修改正确的日期!"
        Sheet15.Select
x = Range("A65536").End(xlUp).Row + 1 '最后行数
Cells(x, 1) = x - 1
Range("B" & x & ":F" & x) = Array(Sheet2.Cells(i, 3).Value, Sheet2.Cells(i, 4).Value, Sheet2.Cells(i, 6).Value, Sheet2.Cells(i, 8).Value, aa)
Sheet2.Select
End If
If Sheet2.Cells(i, 3).Value > Sheet2.Cells(i, 13).Value Then
''MsgBox "注意:《" & Sheet2.Cells(i, 4).Value & "》的科一时间比报名时间早,请修改正确的日期!", 16, "温馨提示窗口"
aa = "科一时间比报名时间早,请修改正确的日期!"
        Sheet15.Select
x = Range("A65536").End(xlUp).Row + 1 '最后行数
Cells(x, 1) = x - 1
Range("B" & x & ":F" & x) = Array(Sheet2.Cells(i, 3).Value, Sheet2.Cells(i, 4).Value, Sheet2.Cells(i, 6).Value, Sheet2.Cells(i, 8).Value, aa)
Sheet2.Select
End If
End If
Next i
MsgBox "Holle!检查完毕,请到异常明细表查看结果并及时修改,以免造成数据错乱!", 64, "温馨提示窗口"
End Sub

学员总表(综合版).rar (1.96 MB, 下载次数: 5) VBA密码:123456  以上2个代码在附件里面的模块3内,因为比较长我就没有全部贴出来,求高手来指导下
激活密码是:当天日期*9+2661092      例如:20160209*9+2661092=184102973

TA的精华主题

TA的得分主题

发表于 2016-2-14 09:55 | 显示全部楼层
建议把引用单元格的都改为数组。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-14 16:39 | 显示全部楼层
蓝桥玄霜 发表于 2016-2-14 09:55
建议把引用单元格的都改为数组。

能否弄下附件,我技术有限

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-3-5 18:46 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 20:16 , Processed in 0.032937 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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