遍历范围
我有一个通过或未通过validation(BA)的单元格。 如果用户从下拉列表中selectPass
,则unit passed all tests
显示在另一个单元格(N)中。 我已经习惯于这样做的VBA按预期工作:
在Worksheet_Change上
If Range("BA17").Value = "Pass" Then Range("N44").Value = "Unit passed all tests." If Range("BA18").Value = "Pass" Then Range("N45").Value = "Unit passed all tests." If Range("BA19").Value = "Pass" Then Range("N46").Value = "Unit passed all tests."
可以压缩这个,因为最后一张纸最多有25-30行吗?
我尝试添加一个范围,即(“BA17:BA40”),但是每次更新所有的字段,这是不理想的。
这将更新列N(行偏移27)值“单元通过所有testing”。 如果BA列中只有一个单元格被更新,并且当前行> 17
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) With Target If .CountLarge = 1 And .Column = Range("BA1").Column And .Row > 17 Then If .Value2 = "Pass" Then Application.EnableEvents = False .Offset(27, Range("N1").Column - .Column).Value = "Unit passed all tests." Application.EnableEvents = True End If End If End With End Sub
避免多个条目循环的选项
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng1 As Range Set rng1 = Intersect(Target, [BA17:BA40]) If rng1 Is Nothing Then Exit Sub Application.EnableEvents = False With rng1.Offset(27, -39) .FormulaR1C1 = "=IF(R[-27]C[39]=""Pass"",""Unit passed all tests."","""")" .Value = .Value End With Application.EnableEvents = True End Sub