在不同范围内循环VBA

时间:2018-10-03 05:37:56

标签: excel vba

下面的代码很好用,但是需要进行现代化。 此代码用于一个表,直到表末尾都有效。但是我在实际(存在)表的同一页下添加了加法表。我需要跳过3个空单元格(循环)并为下面的下表启动代码。换句话说,要找到下面的表格并在那里执行代码。 如何实现(实现)?

Sub Test()
Dim score1 As Double, score2 As Double, score3 As Double, result As String, text As String

Dim ifrom As Long, ito As Long
Dim i As Long

ifrom = 2
ito = Range("E2").End(xlDown).Row ' find the row above the 1st blank cell in column E

name1 = "A"       
name2 = "B"    
audit = "C"      
currenc = "Dollars"       


For i = ifrom To ito

    text = Range("E" & i).Value
    score1 = Int(Range("B" & i).Value)
    score2 = Int(Range("C" & i).Value)
    score3 = Int(Abs(Range("D" & i).Value))


If score1 = 0 And score2 = 0 Then
    result = text + ......

ElseIf score1 = score2 Then
    result = text +........

ElseIf score1 > score2 And score2 <> 0 Then
    result = text + ............

ElseIf score1 < score2 And score1 <> 0 Then
    result = text +......

Else
    result = text + " 00000000"

End If

Range("H" & i).Value = result
Next i
End Sub

2 个答案:

答案 0 :(得分:0)

尝试一下:

Sub Test()

    '... Define your variables ....

    Dim LastRow As Long
    LastRow = Range("E" & Rows.Count).End(xlUp).Row

    name1 = "A"
    name2 = "B"
    audit = "C"
    currenc = "Dollars"

    ifrom = 2
    Do
        ito = Range("E" & ifrom).End(xlDown).Row ' find the row above the 1st blank cell in column E

        For i = ifrom To ito
            '... Your code comes here ...
        Next i
        ifrom = Range("E" & ifrom).End(xlDown).Row ' find top of next table, if no table return last row of worksheet
    Loop While ifrom < LastRow
End Sub

答案 1 :(得分:0)

此外,由于您的公式仅与同一行相关,因此您可以尝试以下更简单的方法:

Sub Test()
    Dim score1 As Double, score2 As Double, score3 As Double, result As String, text As String

    Dim ifrom As Long, ito As Long
    Dim i As Long

    ifrom = 2
    ito = Range("E" & Rows.Count).End(xlUp).Row 'This row changed

    name1 = "A"
    name2 = "B"
    audit = "C"
    currenc = "Dollars"

    For i = ifrom To ito
        If Range("E" & i).Value <> "" Then
            '.... Your code goes here
        End If
    Next i
End Sub