跳到循环 vba 中的下一次迭代

     2023-02-22     268

关键词:

【中文标题】跳到循环 vba 中的下一次迭代【英文标题】:Skip to next iteration in loop vba 【发布时间】:2014-01-07 23:57:48 【问题描述】:

我正在尝试创建一个简单的条件循环,如果条件为真,它将进​​入下一次迭代。我到目前为止的代码是:

For i = 2 To 24
    Level = Cells(i, 4)
    Return = Cells(i, 5)

    If Return = 0 And Level = 0 Then
        'Go to the next iteration
    Else
    End If
Next

我尝试过GoTo NextIteration,但出现错误“标签未定义”。这可能有一个非常简单的解决方案,但非常感谢您的帮助。 谢谢。

【问题讨论】:

whats Level whats Return,你的电子表格是什么样子的 反转子句并放弃? - 或***.com/questions/5895908/continue-for-loop VbScript 中没有Continue。您将不得不玩 If-Else 以跳过任何迭代。浏览@AlexK 发布的链接。它有一些很好的建议。 两个整数,如果这两个值都是 0,我正在尝试确保代码不会运行。 没有人说过不应该使用Return...(你知道...它用于其他东西,如果用作变量可能会导致巨大的问题)跨度> 【参考方案1】:
For i = 2 To 24
  Level = Cells(i, 4)
  Return = Cells(i, 5)

  If Return = 0 And Level = 0 Then
    'Go to the next iteration
    GoTo NextIteration
  Else
  End If
  ' This is how you make a line label in VBA - Do not use keyword or
  ' integer and end it in colon
  NextIteration:
Next

【讨论】:

为什么elseif 之后?我得到end if without if block 它在 OP 发布的代码中。 我明白了,IT 生活不是复制粘贴。 @timo:它可能不像我最初拥有的那样工作,所以我将实际执行的“GoTo”移动到评论下,就像大多数人习惯的那样。【参考方案2】:

一旦满足条件就什么也不做,否则执行您需要的处理,For 循环将转到下一项。

For i = 2 To 24
    Level = Cells(i, 4)
    Return = Cells(i, 5)

    If Return = 0 And Level = 0 Then
        'Do nothing
    Else
        'Do something
    End If
Next i

或更改子句,使其仅在满足条件时处理:

For i = 2 To 24
    Level = Cells(i, 4)
    Return = Cells(i, 5)

    If Return <> 0 Or Level <> 0 Then
        'Do something
    End If
Next i

【讨论】:

不应该是 If Return 0 还是 Level 0 Then,所以与 If Return = 0 And Level = 0 Then 正好相反? 第二个似乎有效,但我认为我需要一个 Or 而不是 And。我认为也需要一个 Else。【参考方案3】:

我使用转到

  For x= 1 to 20

       If something then goto continue

       skip this code

  Continue:

  Next x

【讨论】:

最简单(= 最佳)的解决方案(我赞成),但“跳过此代码”应改为“如果'某事'为真则跳过此代码”。【参考方案4】:

目前的解决方案产生与您的 OP 相同的流程。 它不使用标签,但这不是 OP 的要求。您只要求“一个简单的条件循环,如果条件为真,它将进​​入下一次迭代”,并且由于这更易于阅读,它可能是比使用标签更好的选择

for 循环中的内容遵循模式

If (your condition) Then
    'Do something
End If

在这种情况下,你的条件是Not(Return = 0 And Level = 0),所以你会使用

For i = 2 To 24
    Level = Cells(i, 4)
    Return = Cells(i, 5)

    If (Not(Return = 0 And Level = 0)) Then
        'Do something
    End If
Next i

PS:条件等价于(Return &lt;&gt; 0 Or Level &lt;&gt; 0)

【讨论】:

【参考方案5】:

您可以通过使用嵌套的Do ... Loop While False 来使用一种continue

'This sample will output 1 and 3 only

Dim i As Integer

For i = 1 To 3: Do

    If i = 2 Then Exit Do 'Exit Do is the Continue

    Debug.Print i

Loop While False: Next i

【讨论】:

R for循环跳到下一次迭代ifelse

】Rfor循环跳到下一次迭代ifelse【英文标题】:Rforloopskiptonextiterationifelse【发布时间】:2015-11-1115:49:20【问题描述】:假设你有一个这样的for循环for(nin1:5)#if(n=3)#skip3rditerationandgotonextiterationcat(n)如果满足某个条件,如何跳到下一个... 查看详情

VBA - 如何有条件地跳过for循环迭代

...循环。我想要做的是测试循环中的某个条件,如果为真则跳到下一次迭代:Fori=LBound(Schedule,1)ToUBound(Schedule,1)If(Schedule(i,1)<Reference 查看详情

相当于 Ruby 中的“继续”

...述】:在C和许多其他语言中,有一个continue关键字,当在循环内使用时,它会跳转到循环的下一次迭代。Ruby中有没有与continue关键字等效的东西?【问题讨论】:continue不会“重新启动”循环,而是跳转到循环的下一次迭代。@mla... 查看详情

获取循环中的下一项

】获取循环中的下一项【英文标题】:Gettingthenextiteminaloop【发布时间】:2011-12-2218:19:14【问题描述】:我想做的很简单:我有一个模型,我正在运行一个重组循环。现在我想将循环的前4项并排显示,然后在下一行继续显示接下... 查看详情

如果单元格内容已经通过,则 vba 下一次迭代

...发布时间】:2020-06-1706:44:55【问题描述】:所以按照我的循环表的代码,连接到sqlserver并发送表的数据,我还有一个小约束:我逐行、逐个单元地发送5400行和13列数据(实际上并没有那么慢!)但我需要在某个单元格上设置条件... 查看详情

转到 JavaScript forEach 循环中的“下一个”迭代 [重复]

】转到JavaScriptforEach循环中的“下一个”迭代[重复]【英文标题】:Goto"next"iterationinJavaScriptforEachloop[duplicate]【发布时间】:2015-10-0215:56:44【问题描述】:如何进入JavaScriptArray.forEach()循环的下一次迭代?例如:varmyArr=[1,2,3,... 查看详情

使用 Bulk Collect 跳到 pl sql 游标中的下一条记录

】使用BulkCollect跳到plsql游标中的下一条记录【英文标题】:SkiptonextrecordinaplsqlCursorwithBulkCollect【发布时间】:2014-06-0512:42:07【问题描述】:请分析下面的代码sn-p并提出一种跳到光标中下一条记录的方法。开始OPENcs_migrate_drop_ntd_o... 查看详情

调用`async for in`后如何获得异步生成器的下一次迭代

】调用`asyncforin`后如何获得异步生成器的下一次迭代【英文标题】:Howtogetnextitererationofasyncgeneratoraftercalling`asyncforin`【发布时间】:2020-07-1721:40:37【问题描述】:使用FastAPI,我试图检测StreamingResponse是否已完全被客户端使用,或... 查看详情

Python:在外循环中继续下一次迭代

】Python:在外循环中继续下一次迭代【英文标题】:Python:Continuingtonextiterationinouterloop【发布时间】:2010-12-2323:07:55【问题描述】:我想知道是否有任何内置方法可以在python的外循环中继续下一次迭代。例如,考虑以下代码:forii... 查看详情

如何在循环中回滚到下一次迭代?

】如何在循环中回滚到下一次迭代?【英文标题】:Howdoyourollbacktothenextiterationinaloop?【发布时间】:2015-11-2503:34:46【问题描述】:为了更容易解释我的问题,我将粘贴我的整个代码:droptabletst;createtabletst(t1number(2));setserveroutputonDE... 查看详情

转到基于范围的 for 循环中的下一个迭代器

】转到基于范围的for循环中的下一个迭代器【英文标题】:Gotonextiteratorinrange-basedforloop【发布时间】:2020-10-0516:55:08【问题描述】:对于我的项目,我需要使循环中的迭代器转到容器中的下一个项目,执行一些操作,然后再次返... 查看详情

For 循环语句不读取 if 语句以继续下一次迭代

】For循环语句不读取if语句以继续下一次迭代【英文标题】:Forloopstatementnotreadingifstatementtocontinuetonextiteration【发布时间】:2018-12-1808:09:16【问题描述】:我的代码如下所示:foriteminitems:ifitem.data["position"]==\'5\':item.delete()continueelif... 查看详情

如何忽略-inf并移至for循环中的下一个迭代

】如何忽略-inf并移至for循环中的下一个迭代【英文标题】:Howtodisregard-infandmovetonextiterationinforloop【发布时间】:2015-01-1000:18:44【问题描述】:您好,我希望得到一些帮助importnumpyasnpimportmathimportmatplotlib.pylabaspltimportpandasaspdfromscip... 查看详情

java示例代码_在循环时,确保可变数组中的下一项实际上是下一项

java示例代码_在循环时,确保可变数组中的下一项实际上是下一项 查看详情

如何使用R中的下一个函数跳过for循环中的迭代[重复]

】如何使用R中的下一个函数跳过for循环中的迭代[重复]【英文标题】:HowtoskipiterationsinaforloopusingthenextfunctioninR[duplicate]【发布时间】:2019-09-1402:54:04【问题描述】:len1<-sample(1:2,100,replace=TRUE)df<-data.frame(col1=c(1:200),col2=c(1:200))f... 查看详情

迭代器(代码片段)

...(如formaxminsum等函数)使用迭代器协议来访问对象 for循环机制:  注:字符串、列表、元组、字典、集合、文件对象,这些本不是可迭代对象,故本身没有next方法,当用for遍历这些数据类型时,会进行下列操作:   ... 查看详情

错误时使用 tryCatch 跳到循环的下一个值?

】错误时使用tryCatch跳到循环的下一个值?【英文标题】:UsetryCatchskiptonextvalueofloopuponerror?【发布时间】:2011-12-2623:49:29【问题描述】:我已经阅读了一些关于tryCatch和cuzzins的其他SO问题,以及文档:ExceptionhandlinginRcatchinganerrorand... 查看详情

迭代器协议和for循环工作机制(代码片段)

一递归和迭代递归:迭代:被for循环方法二什么是迭代器协议1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个Stoplteration异常,以终止迭代(只能往后走不能往前退) 例... 查看详情