我有一个电子表格,我希望2个相邻的单元格是独占的,这意味着您只能在2个单元格中的一个中输入值。我在引用特定单元格范围时使代码正常工作。
但是我有这个逻辑重复电子表格中的每4行。我尝试创建一个整数值来逐步增加行引用,但带有消息框的操作不会应用于" next"整数。
任何帮助都会受到赞赏。下面是我尝试通过整数数据类型声明J作为我的行引用。现在我将j设置为34-146。如果我把" x"在D34然后放一个" X"在E34中,我收到消息,并且在E34中输入的值被清除 - 这就是我想要的。当我在D38和E38中执行相同操作时,我没有收到任何消息,数据输入仍保留在两个单元格中。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim j As Integer
For j = 34 To 146 Step 4
Dim rLook As Range
Set rLook = Range("D" & j & ":E" & j)
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
If Intersect(Target, rLook) Is Nothing Then Exit Sub
If wf.CountA(rLook) < 2 Then Exit Sub
Application.EnableEvents = False
Target.ClearContents
MsgBox ("Only one entry allowed. Please select either Blanket or User Specific.")
Application.EnableEvents = True
Next j
End Sub
答案 0 :(得分:0)
如果我理解你所追求的是什么,就没有必要循环遍历细胞 - Target
将永远是改变的细胞。您需要的只是一个简单的测试,以查看相邻的单元格是否匹配:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim matching As Boolean
If Target.Column = 4 Then
matching = (Target.Value = Target.Offset(0, 1).Value)
ElseIf Target.Column = 5 Then
matching = (Target.Value = Target.Offset(0, -1).Value)
End If
If matching Then
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
MsgBox "Only one entry allowed. Please select either Blanket or User Specific."
End If
End Sub
如果你需要将它限制在特定的行中,只需将整个内容包装在另一个中。如果测试Target.Row
是否是你关心的那个。