2016-11-24 39 views
0

我有一个父下拉框栏我和孩子下拉在J栏框,改变基于列的一度我怎样才能通过。如果/ then语句循环

如果列我的变化,我会像列j重置而不是保持其原始值。

我已经工作了我的第一行的代码

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address(0, 0) = "I2" Then Range("J2").ClearContents 
End Sub 

我怎样才能得到它遍历每一行?

非常感谢, 詹姆斯

回答

2

你的意思是,只要在我的值改为你想以J的相应值清零?最好限制在一个特定的I/J范围内 - 这将完成整个列。

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.column = 9 Then target.offset(,1).ClearContents 
End Sub 
+1

我想补充一点,共产国际的解决方案,对矿井的边缘,它会检查多个小区的改变。 – SJR

1

我会检查,看看是否Target范围内I列相交,然后通过所有的改变范围细胞的循环。您可以使用.Row物业内循环,清除相应的单元格:

Private Sub Worksheet_Change(ByVal Target As Range) 
    'Did something change in column I? 
    If Intersect(Target, Me.Range("I:I")) Is Nothing Then 
     Exit Sub 
    End If 

    Dim test As Range 
    'Loop through all of the changed cells. 
    For Each test In Target 
     'If the cell is in column I... 
     If test.Column = 9 Then 
      '...clear column J in that row. 
      Me.Cells(test.Row, 10).ClearContents 
     End If 
    Next 
End Sub