Loops 未编译,因为“下一步不为”

Loops 未编译,因为“下一步不为”,loops,ms-access,vba,Loops,Ms Access,Vba,我有下面的代码,但它在最后一个For循环中抱怨说,我有一个没有For的下一个For循环,所以甚至不会编译,这样我就可以调试了 我猜我有一些方向上的问题,但如果它不编译的话,我甚至不能研究它 For Each ck In Screen.ActiveForm For Each oCol In OverlapCol If oCol = Right(ck.Name, Len(ck.Name) - 2) Then ck.Enabled = True

我有下面的代码,但它在最后一个For循环中抱怨说,我有一个没有For的下一个For循环,所以甚至不会编译,这样我就可以调试了

我猜我有一些方向上的问题,但如果它不编译的话,我甚至不能研究它

For Each ck In Screen.ActiveForm
    For Each oCol In OverlapCol
        If oCol = Right(ck.Name, Len(ck.Name) - 2) Then
        ck.Enabled = True
        Exit For
        GoTo TrueCk
        End If
    Next oCol
    For Each aCol In DistAutCol
        If aCol = Right(ck.Name, Len(ck.Name) - 2) Then
        ck.Enabled = True
        GoTo TrueCk
        Exit For
        End If
    Next aCol
    For Each gCol In DistGenCol
        If gCol = Right(ck.Name, Len(ck.Name) - 2) Then
        ck.Enabled = True
        Exit For
        GoTo TrueCk
    Next gCol
    ck.Enabled = False
TrueCk:
Next ck

我不明白:For循环与其他循环有什么不同?为什么我会遇到这个问题?

我建议在Ifs中使用缩进进行格式化,如下所示:

    For Each ck In Screen.ActiveForm
        For Each oCol In OverlapCol
            If oCol = Right(ck.Name, Len(ck.Name) - 2) Then
                ck.Enabled = True
                Exit For
                GoTo TrueCk
            End If
        Next oCol
        For Each aCol In DistAutCol
            If aCol = Right(ck.Name, Len(ck.Name) - 2) Then
                ck.Enabled = True
                GoTo TrueCk
                Exit For
            End If
        Next aCol
        For Each gCol In DistGenCol
            If gCol = Right(ck.Name, Len(ck.Name) - 2) Then
                ck.Enabled = True
                Exit For
                GoTo TrueCk
            End If
        Next gCol
        ck.Enabled = False
TrueCk:
    Next ck

在这种情况下,您可能会注意到,您忘记在last If中添加End If,不幸的是,编译器消息在这种情况下会产生误导。

太好了!谢谢,为了清楚起见,我以后会添加缩进。