Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3225|回复: 7

[已解决]求当前系统时间与数据录入时间差的VBA代码

[复制链接]
发表于 2017-5-4 12:25 | 显示全部楼层 |阅读模式
请教各位大师一段代码:在录入学生成绩的过程中,程序自动记录数据录入的日期和时间,30秒或一个固定时间后,若发现错误要修改,会弹出窗体(附件中已提供),必须输入正确密码方可修改。
最佳答案
2017-5-5 14:02
基本上是个半成品了,稍改了下,试试
无标题.png

Book1.rar

10.86 KB, 下载次数: 6

发表于 2017-5-5 07:14 | 显示全部楼层
本帖最后由 327718098 于 2017-5-5 11:59 编辑

增加了mno3列辅助保存成绩,你把它们字体颜色设置为白色,或者隐藏这3列。要30秒后要修改我直接用的inpitbox,没有你的窗体,太麻烦,里面大密码你自己设置,如果要设置多个密码就改下这句If Val(InputBox("请输入修改密码", "提示")) <> 123,改为If Val(InputBox("请输入修改密码", "提示")) <> 123 or Val(InputBox("请输入修改密码", "提示")) <> "你的密码"就行,还有密码得设置为数子,要设置文字的话把val去掉就行。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 3 And Cells(Target.Row, "I") <> "" Then
If (Now - Cells(Target.Row, "I")) > ("1900-1-0 0:00:30") Then
    If Val(InputBox("请输入修改密码", "提示")) <> 123 Then
    MsgBox "你无权修改"
    Target.Value = Cells(Target.Row, "m")
    Application.EnableEvents = True
    End
    End If
End If
End If
If Target.Column = 5 And Cells(Target.Row, "j") <> "" Then
If (Now - Cells(Target.Row, "j")) > ("1900-1-0 0:00:30") Then
    If Val(InputBox("请输入修改密码", "提示")) <> 123 Then
    MsgBox "你无权修改"
    Target.Value = Cells(Target.Row, "n")
    Application.EnableEvents = True
    End
    End If
End If
End If
If Target.Column = 7 And Cells(Target.Row, "k") <> "" Then
If (Now - Cells(Target.Row, "k")) > ("1900-1-0 0:00:30") Then
    If Val(InputBox("请输入修改密码", "提示")) <> 123 Then
    MsgBox "你无权修改"
    Target.Value = Cells(Target.Row, "o")
    Application.EnableEvents = True
    End
    End If
End If
End If
If Target.Column = 3 Then
Cells(Target.Row, "I") = Now
Cells(Target.Row, "M") = Target.Value
ElseIf Target.Column = 5 Then
Cells(Target.Row, "J") = Now
Cells(Target.Row, "n") = Target.Value
ElseIf Target.Column = 7 Then
Cells(Target.Row, "K") = Now
Cells(Target.Row, "o") = Target.Value
End If
Application.EnableEvents = True
End Sub


回复

使用道具 举报

发表于 2017-5-5 14:02 | 显示全部楼层    本楼为最佳答案   
基本上是个半成品了,稍改了下,试试

Book.zip

12.54 KB, 下载次数: 13

回复

使用道具 举报

发表于 2017-5-5 14:05 | 显示全部楼层
别在35列57列357列输入哈,否则出问题
回复

使用道具 举报

 楼主| 发表于 2017-5-5 15:24 | 显示全部楼层
pengyx 发表于 2017-5-5 14:05
别在35列57列357列输入哈,否则出问题

非常感谢pengyx大师的解答,苦于不懂VBA,这个问题已经困扰了我很久,一直找不到有效的方法,今天终于仰仗您的帮助基本解决了我的问题。我说“基本”是因为我还看不懂您的代码,无法一下子消化。1.假如我做的程序录入成绩的列是"c4:c48,e4:e48,g4:g48,i4:i48,k4:k48,m4:m48,o4:o48,q4:q48,s4:s48,u4:u48",该怎么修改您的代码呢?
2.还有,放上您的代码后,我发现同时选中几个单元格都会要求输入密码,该怎么解决?

再次感谢您,期待您的指导!
回复

使用道具 举报

发表于 2017-5-5 16:27 | 显示全部楼层
见到代码里有col = "357"吗?表示在3列5列7列录入。这样你知道如何改了吧。同时选中多个单元格要求输入密码是为了不报错。如果你不希望这样可以把 “on error goto 100” 和“100:” 两名删除。
回复

使用道具 举报

 楼主| 发表于 2017-5-8 11:16 | 显示全部楼层
本帖最后由 jinzikun 于 2017-5-8 11:18 编辑
pengyx 发表于 2017-5-5 16:27
见到代码里有col = "357"吗?表示在3列5列7列录入。这样你知道如何改了吧。同时选中多个单元格要求输入密码 ...

大师,正式程序中有些是合并的单元格,每次单击这些单元格等同于选中多个单元格,都会弹出UserForm3,能否解决掉这个问题:选中多个单元格或单击合并单元格不会弹出UserForm3并且程序不报错。
回复

使用道具 举报

发表于 2017-5-9 20:51 | 显示全部楼层
jinzikun 发表于 2017-5-8 11:16
大师,正式程序中有些是合并的单元格,每次单击这些单元格等同于选中多个单元格,都会弹出UserForm3,能 ...

改了一下,应该可以了,试试

Book.rar

11.9 KB, 下载次数: 8

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-4 02:51 , Processed in 0.346021 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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