这是原贴http://www.excelpx.com/thread-332386-1-1.html
VBA意思:
M列打√必须按顺序从N1--N2---N3来打,就是说假如N1在没有打√的情况下,是不允许N2打√的
但是,你一定要在N1单元格没打√的情况下,去N2处打√,就必须要在L1的位置填写数据才能打√(这个作用是用来填写信息,为什么N1不出仓)两个条件中,只要符合一个都可以不按顺序打√
代码中的红色字体是我修改过的,如果按下面的代码来运行,L列每一行必须都要有数据才可以打√,是不那里错了,可以改吗
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal T As Range)
If Sh.Name = "总表" Then Exit Sub
If Sh.Name = "数据提取" Then Exit Sub
Application.EnableEvents = False
If T.Column = 8 And T.Row > 4 And T.Count = 1 Then
If T.Value = "" Then
T.Offset(0, 1).Value = ""
Else
T.Offset(0, 1).Value = Sheets("人员").[d1]
End If
ElseIf T.Column = 14 And T.Row > 4 Then
If T.Count > 1 Then
For Each c In T
If c = "" Then Range(c.Offset(, 1), c.Offset(, 2)) = ""
Next
Else
If T = "" Then
Range(T.Offset(, 1), T.Offset(, 2)) = ""
Else
T.Offset(0, 1) = Format(Now, "yyyy-mm-dd hh:mm:ss")
T.Offset(0, 2) = Sheets("人员").[d2]
n = T.Row - 4
If n <= 4 Then n = n - 1
If n > 4 Then n = 3
If n > 0 Then
For i = 1 To n
If T.Offset(-1 * i, 0) <> "√" Then
If T.Offset(-1, -2) = "" Then
MsgBox "不符合要求!"
T = ""
T.Offset(0, 1) = ""
T.Offset(0, 2) = ""
Exit For
End If
End If
Next
End If
End If
End If
End If
Application.EnableEvents = True
End Sub
我想改成这样 If T.Offset(-1, -2) = "" Then
当上三格内有没打勾的,则该行不能打勾;当上三格中有没打勾的,但本行的K列(改成本行上一个单元格,K列有数据时)有数据也允许打勾。
这样明白吗,本来是本行的K列,但要改成本行的K列(如本行是19,则在K列18的位置有数据就可以打钩)