0

我有以下代码:

Sub LoopThroughDv()
    Dim dvCell As Range
    Dim inputRange As Range
    Dim c As Range
    Dim i As Long
    Dim h As Range
    Dim a As Range
    Set h = Worksheets("Ark2").Range("H2")
    Set a = Worksheets("Ark2").Range("A2")

     'Which cell has data validation
    Set dvCell = Worksheets("Ark2").Range("I2")

     'Determine where validation comes from
    Set inputRange = Evaluate(dvCell.Validation.Formula1)

    i = 0
     'Begin our loop
    Application.ScreenUpdating = True
    For Each c In inputRange
            dvCell = c.Value
        i = i + 1
    If h > a Then
        Exit For
    End If
    Next c
    Application.ScreenUpdating = True

End Sub      

当 h > ai 时,要将 h、a 和 dvCell 更改为单元格 H3、A3 和 I3,然后继续增加直到空白单元格。

4

1 回答 1

0

像下面这样的东西?关键是你必须循环整个过程,直到你得到空白单元格。您可能需要根据您的数据设置稍微调整直到部分。

i = 2

Do

    Set h = Worksheets("Ark2").Range("H" & i)
    Set a = Worksheets("Ark2").Range("A" & i)

     'Which cell has data validation
    Set dvCell = Worksheets("Ark2").Range("I" & i)

     'Determine where validation comes from
    Set inputRange = Evaluate(dvCell.Validation.Formula1)

    For Each c In inputRange
        dvCell = c.Value
        If h.Value > a.Value Then Exit For
    Next c

    i = i + 1

Loop Until h.Offset(1).Value = ""
于 2020-05-05T13:12:43.933 回答