如何循环使用If / Then语句

时间:2016-11-24 15:06:19

标签: excel vba excel-vba

我在第一列中有一个父下拉框,在第J列中有一个基于第一列更改的子下拉框。

如果第I列发生变化,我希望第j列重置而不是保留其原始值。

我的代码适用于我的第一行

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

如何让它循环遍历每一行?

非常感谢, 詹姆斯

2 个答案:

答案 0 :(得分:2)

你的意思是每当I中的值被改变时你想要清除J中的相应值吗?最好限制在特定的I / J范围内 - 这将完成整个专栏。

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

答案 1 :(得分: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