【发布时间】:2019-01-08 02:50:55
【问题描述】:
我有一个代码可以查找 2 个不同的单元格,并在每次两个单元格都有特定条件时显示一个弹出窗口,但它只针对该特定行。
我正在寻找一种方法来使用 1 个代码来查找每行上的每一对单元格并独立评估它们。
尝试更改范围,但显然会创建很长的代码,我确信有更好的方法,但我的知识有限。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Me.Range("A:B")) Is Nothing Then
If (Range("A2").Value = "Text1") And Range("B2").Value > ### Then MsgBox "Message"
End If
End Sub
代码应查看包含 200 行的整个表,并且理想情况下继续查看表是否针对每一行的特定条件变大,所有 A2 和 B2、A3 和 B3 等等。
目前它只查看我选择的单元格,我能想到的唯一解决方案是复制粘贴并更改每段新代码的范围。
谢谢!
【问题讨论】:
-
If Range("A" & Target.Row).Value = "Text1" And Range("B" & Target.ROW).Value > ### Then MsgBox "Message"` -
您也可能想使用
Target.Cells.CountLarge而不是.Count?请看This -
您所描述的内容需要一个 For ... Next 循环。在 MSDN 或他们教的地方查找。但是,从逻辑上讲,这在 Change 事件中没有意义,因为一次只更改了一项,并且您不需要检查那些未更改的项目,因为它们之前已被检查过。要创建动态范围,请查看 Cells(Rows.Count, "A").End(xlUp).Row
-
@Variatus:当您粘贴到相关范围内的多个单元格上时,这些更改也会发生。但是
Target.Cells.CountLarge/Target.Cells.Count会否定它。 -
@SiddharthRout,太完美了!太感谢了!先生,您解决了我的问题。