所以我目前正在使用经典的“如果单元格更改值,则运行宏”:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("O1"), Range(Target.Address)) Is Nothing Then
Call Macro A
End if
End Sub
现在,我想扩展宏,以便它检查Range("O1:O40")
范围内的每个单元格,并根据更改值的单元格运行一个不同的宏。
可以将不同的宏放在循环中,因为代码本质上是:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("O1"), Range(Target.Address)) Is Nothing Then
Worksheets("Data").Range("N1").Value = Worksheets("Input").Range("O1").Value
ElseIf Not Application.Intersect(Range("O2"), Range(Target.Address)) Is Nothing Then
Worksheets("Data").Range("N2").Value = Worksheets("Input").Range("O2").Value
End if
End Sub
因此,如果Worksheets("Input").Range("O1")
更改了值,则必须将值复制到Worksheets("Data").Range("N1")
,对于"O1:O40"
范围内的所有单元格都这样复制
答案 0 :(得分:0)
您可以使用“每个循环”遍历整个范围
Dim cell As Range
For Each cell In Range("O1:O40")
If Not Application.Intersect(cell, Range(Target.Address)) Is Nothing Then
Worksheets("Data").Range("N" & cell.row).Value2 = cell.Value2
End If
Next cell