【问题标题】:VBA + Macros + For each cell condition errorVBA + 宏 + 对于每个单元格条件错误
【发布时间】:2021-09-01 07:10:59
【问题描述】:

我想就以下代码寻求帮助。

第一个“IF”条件运行良好,但我想跳过第一个条件的复制和粘贴功能并继续循环的“ELSE”条件不起作用,并给我一个看起来像的错误消息这个:

提前感谢您!给你们更多的力量!

Sub IF_Loop3()

    Dim cell As Range
    For Each cell In Range("TablePrac[Animals]")
        If cell.Value <> "NULL" Then
            cell.Offset(0, -3).Value = cell.Value
            
        Else
        If cell.Value = " " Then
        Exit For
        
        End If
        
    Next cell

End Sub

【问题讨论】:

  • 还是不行,它只是将“”空间值复制到目标单元格
  • ElseIf cell.Value = " " Then(哎呀)
  • 在同一行写上If cell.Value = " " ThenExit For,这样你就不需要写另一个End If。目前你有 2 个If 但只有 1 个End If,所以编译器认为Next cell 在第一个If 语句中,从而给你错误消息。
  • ElseIf cell.Value = " " Then Exit For End IF Next cell 是这样的吗?它仍然将空格“”复制到 0, 3 坐标:(
  • 要清楚,如果cell.Value = " ",你想退出循环,如果值不是cell.Offset(0, -3).Value = cell.Value,则执行这一行"NULL"(“NULL”=/=空单元格)对?

标签: excel vba for-loop each


【解决方案1】:
For Each cell In Range("TablePrac[Animals]")
        If cell.Value <> "NULL" Then
            cell.Offset(0, -3).Value = cell.Value
            
        Else If cell.Value = " " Then
             Exit For
             End If ' If cell.Value = " "
        End If 'If cell.Value <> "NULL" <= you forgot this one!
    Next cell

【讨论】:

    【解决方案2】:

    基于您的解释的新代码:

    Sub IF_Loop3()
        Dim cell As Range
        For Each cell In Range("TablePrac[Animals]")
            If (cell.Value <> "NULL") and (cell.Value <> " ") Then
                cell.Offset(0, -3).Value = cell.Value
            End If
        Next cell
    End Sub
    

    您有两个条件来执行复制/粘贴:value &lt;&gt; "NULL"value &lt;&gt; " "。您只需将这两个条件放在 If 测试中即可得到尊重。

    如果您写Exit For,则意味着循环将中断,您的代码将在循环后的第一行继续,而不是循环的下一次迭代。

    【讨论】:

    • 也不起作用,但我非常感谢您的帮助。谢谢你:)
    • 我认为这段代码的工作方式与您的代码不工作的方式不同?如果是这样,您现在收到的错误消息或问题是什么?
    • 它仍然将“”(空间值)复制到(0,-3)点
    • 你确定它是" "(只有1个空格),而不是""(空白字符串)或几个空格?它将具有相同的视觉渲染(单元格中没有写入任何内容),但在代码中的处理方式不同。
    • @DamonSolidor 尝试在If 处添加断点,打开局部变量窗口(在“查看”选项卡中可用),使用 F5 运行代码,每次运行时查看单元格的值运行时到达断点。如果值为" ",按F8一步步运行,看看代码表现如何。这可能会为您的问题根源提供一些见解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多