Excel VBA循环代码无法正常工作

时间:2015-08-23 19:25:49

标签: vba excel-vba loops while-loop excel

此代码不适用于循环。我无法弄清楚为什么。我知道它很简单但却无法看到它。电子表格名称是正确的。当我运行它时,它可以工作,但每次都必须调试。

Sub Button1_Click()

    Dim X As Integer
    Dim Y As Integer
    Dim Z As Integer
    Dim Count As Integer

    X = 17
    Y = 2
    Z = 1
    Count = 4560

    Do While Z < Count
        If Sheets("Ind").Range("A" & X) = 1 Then
            Sheets("Returns").Range("A" & Y) = Sheets("Ind").Range("D" & X)
            Sheets("Returns").Range("B" & Y) = "Buy"
            Y = Y + 1
        ElseIf Sheets("Ind").Range("C" & X) = 2 Then
            Sheets("Returns").Range("A" & Y) = Sheets("Ind").Range("D" & X)
            Sheets("Returns").Range("B" & Y) = "Sell"
            Y = Y + 1
        End If
        X = X + 1
        Z = Z + 1
        Y = Y + 0
    Loop
End Sub

1 个答案:

答案 0 :(得分:0)

如果没有错误编号和描述(并且不知道它在哪里断线以及那时Z的值),很难确定问题的原因。

在任何情况下:你可以绕过错误(只要你发现它没有弄乱最终结果)。

免责声明:这不会解决您的问题,只会绕过它。请注意,因为这可能导致您的代码无法使用某些变量组合执行。建议您实际尝试修复代码,而不是在上面添加创可贴。

只需添加:

On Error GoTo Looper

在更新变量之前添加:

On Error GoTo 0

活套:

~~~~~~~~~~~~~~

您的代码包含上面提到的错误处理程序:

Sub Button1_Click()

Dim X As Integer
Dim Y As Integer
Dim Z As Integer
Dim Count As Integer

X = 17
Y = 2
Z = 1
Count = 4560
On Error GoTo Looper
Do While Z < Count
    If Sheets("Ind").Range("A" & X) = 1 Then
        Sheets("Returns").Range("A" & Y) = Sheets("Ind").Range("D" & X)
        Sheets("Returns").Range("B" & Y) = "Buy"
        Y = Y + 1
    ElseIf Sheets("Ind").Range("C" & X) = 2 Then
        Sheets("Returns").Range("A" & Y) = Sheets("Ind").Range("D" & X)
        Sheets("Returns").Range("B" & Y) = "Sell"
        Y = Y + 1
    End If
    On Error GoTo 0
Looper:
    X = X + 1
    Z = Z + 1
    Y = Y + 0
Loop
End Sub