单元格循环的工作表单元格值更改

时间:2018-11-16 07:40:34

标签: excel vba

所以我目前正在使用经典的“如果单元格更改值,则运行宏”:

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"范围内的所有单元格都这样复制

1 个答案:

答案 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