我需要一个EXCEL签名表,在A列输入姓名后B列自动生成时间,而且输入后的姓名和时间是不能被修改的。
现在我找到了自动生成时间的代码PrivateSubworksheet_Change(ByValTargetAsRange)IfTarget.Column=1ThenShe...
现在我找到了自动生成时间的代码Private Sub worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Sheet1.Cells(Target.Row, 2) = Now()
End Sub还有不能被修改的代码Dim Ps As String
Dim IsProtect As Boolean
'作者:QSDDZ 2009-11-19 QQ:690964731
Private Sub WorkSheet_SelectionChange(ByVal Target As Range)
Ps = "123456" '这是保护工作表时用的密码
IsProtect = True '这个参数可设置True或False,分别是开启和取消此代码的保护功能。
If Not IsProtect Then Exit Sub
If Target.Count = 1 Then
If Target = "" Then
ActiveSheet.Unprotect Password:=Ps
Exit Sub
End If
End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=Ps
End Sub
但是2个不能同时使用,希望各位高手能帮忙看下
你们这2段代码第一次都可以用,但是关闭EXCEL以后,再打开就不行了,出现安全级别被设为高,宏被禁用 展开
If Target.Column = 1 Then Sheet1.Cells(Target.Row, 2) = Now()
End Sub还有不能被修改的代码Dim Ps As String
Dim IsProtect As Boolean
'作者:QSDDZ 2009-11-19 QQ:690964731
Private Sub WorkSheet_SelectionChange(ByVal Target As Range)
Ps = "123456" '这是保护工作表时用的密码
IsProtect = True '这个参数可设置True或False,分别是开启和取消此代码的保护功能。
If Not IsProtect Then Exit Sub
If Target.Count = 1 Then
If Target = "" Then
ActiveSheet.Unprotect Password:=Ps
Exit Sub
End If
End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=Ps
End Sub
但是2个不能同时使用,希望各位高手能帮忙看下
你们这2段代码第一次都可以用,但是关闭EXCEL以后,再打开就不行了,出现安全级别被设为高,宏被禁用 展开
3个回答
展开全部
首先全选工作表>CTRL+1>保护>取消勾选:锁定
然后右击工作表标签>查看代码>粘贴下面的代码
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
With Target.Cells(1)
If .Column > 1 Or .Value = "" Then Exit Sub
Application.EnableEvents = False
.Offset(0, 1) = Now
Application.EnableEvents = True
ActiveSheet.Unprotect "123456"
.Resize(1, 2).Locked = True
ActiveSheet.Protect "123456"
End With
End Sub
然后右击工作表标签>查看代码>粘贴下面的代码
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
With Target.Cells(1)
If .Column > 1 Or .Value = "" Then Exit Sub
Application.EnableEvents = False
.Offset(0, 1) = Now
Application.EnableEvents = True
ActiveSheet.Unprotect "123456"
.Resize(1, 2).Locked = True
ActiveSheet.Protect "123456"
End With
End Sub
更多追问追答
追问
只有第一行可以啊,后面的就全被保护不能输入了
追答
你没看我回复的第一句话.
展开全部
试一下这个代码吧:
Dim a
Private Sub Worksheet_Change(ByVal Target As Range)
If a <> "" Then
Target.Value = a
Exit Sub
End If
If Target.Column = 1 Then Sheet1.Cells(Target.Row, 2) = Now()
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
a = Target.Value
End Sub
Dim a
Private Sub Worksheet_Change(ByVal Target As Range)
If a <> "" Then
Target.Value = a
Exit Sub
End If
If Target.Column = 1 Then Sheet1.Cells(Target.Row, 2) = Now()
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
a = Target.Value
End Sub
更多追问追答
追问
请问可以把CD、EF、GH往后每两列都实现这样功能吗,如果能要怎么改呢,还有除了把安全级别设为低以外还有别的办法来解决宏被禁用的问题吗
追答
Dim a
Private Sub Worksheet_Change(ByVal Target As Range)
If a "" Then
Target.Value = a
Exit Sub
End If
If Target.Column Mod 2 = 1 Then Sheet1.Cells(Target.Row, Target.Column + 1) = Now()
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
a = Target.Value
End Sub
至于安全级别的问题,估计也只能把它设成低了,,,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
打印机型号不同,自己预览再稍微调一下,给顶下, 已发过去!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询