excel - 如何将 'Skip' 转到每个范围的下一行

标签 excel vba

我正在使用 For Each 循环遍历 2D 范围对象。默认情况下,此循环先循环列,然后循环行。我在一列中进行了检查,指示我是否应该处理该行。我发现,即使我不打算处理该行,程序仍然会循环遍历给定范围行中的每一列 - 这是非常低效的。

示例数据集的图像:

enter image description here

当前代码:

Sub ForEachLoop()
    
    Dim ws As Worksheet
    Dim myRng As Range, cell As Range
    Dim strCheck As String
    

    Set myRng = Selection 'COLUMN F:G IN IMAGE

    For Each cell In myRng
        strCheck = ws.Range("E" & cell.Row).Value
        If strCheck = "PROCESS" Then
            'do something
        End If
    Next cell
End Sub

我想知道是否有办法移动到范围中的下一行,而不是循环遍历该行中的每一列。 For 循环需要保留在 For Each 循环内,因为我正在对单元格进行颜色格式化。

最佳答案

两个循环:循环行,进行检查,然后循环行中的单元格。

Dim rw As Range
For Each rw in myRng.Rows
   strCheck = ws.Range("E" & rw.Row).Value

   If strCheck = "PROCESS" Then
       Dim cell As Range
       For Each cell in rw.Cells
          'process
       Next
   End If   
Next

关于excel - 如何将 'Skip' 转到每个范围的下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66458564/

相关文章:

excel - 一行代码隐藏所有AutoFilter下拉菜单

excel - 生成用于凭据加密的安全 Windows 用户特定加密 key

excel - 自动筛选以查找空白单元格

Excel/VBA - 如果网络连接不存在则中止脚本

sql - 如何将多行excel数据传输到 Access 表中

vba - 我的代码似乎停止执行而没有错误

vba - 在 vba 中使用 Bloomberg API

vba - 参数传递给查询后表刷新,ODBC 刷新

vba - 使用循环复制并粘贴到新行

excel - 当 SQL Select 包含长度大于 100 的 nvarchar 列时,VBA 出现多步错误