excel-2007 - 在二维 VBA 中循环遍历 Excel 中的单元格

标签 excel-2007 excel vba

我正在尝试使用工作表中的 VBA 循环访问一组单元格,并检查它们是否包含任何数据。 我的电子表格如下:

   __A_____B_____C_____D____E_____F____G
 1| 3122  -1    -1   3243   
 2| -1    -1    -1   3243   1     1    1
 3| -1    -1    -1   3255         1
 5| 4232 2132   -1   3259
 6| 7544 1333   324  3259
 7| -1    -1    -1   3259   1     2    1
 8| -1    -1    -1   3259   1     1    1
 9| -1    -1    -1   3267
10| 2121  222   -1   3267

我想删除 E F 和 G 列中没有任何数据的行,但我不确定如何循环遍历行和列。我已经看到了许多关于循环列的说明,但我找不到任何有关如何在二维中循环检查单元格数据的信息。

谢谢

最佳答案

循环行和列的基本思想是需要两个 for 循环。

第一个循环遍历行,第二个遍历列。

我没有使用足够的 VBA 来记住如何删除行,但是如果您向后循环(如下面的代码所示),您永远不会忘记要删除的行。

以下代码应该可以满足您的目的(尽管它需要重构!):
编辑:感谢barrowc以便更正。

Sub remove_some_rows()
    Dim i As Long
    Dim j As Long

    Dim current_cell As Object

    Dim beg_row As Long
    Dim end_row As Long
    Dim beg_col As Long
    Dim end_col As Long

    beg_row = 1
    end_row = 10
    beg_col = 1
    end_col = 7

    Dim empty_col_counter As Integer

    For i = end_row To beg_row Step -1

        empty_col_counter = 0

        For j = end_col To beg_col Step -1
            Set current_cell = ThisWorkbook.ActiveSheet.Cells(i, j)

            If j > 4 And current_cell.Value = "" Then
                empty_col_counter = empty_col_counter + 1
            End If
        Next j

        If empty_col_counter = 3 Then
            current_cell.EntireRow.Select
            Selection.Delete
        End If

    Next i
End Sub

关于excel-2007 - 在二维 VBA 中循环遍历 Excel 中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1836873/

相关文章:

SUMIFS 的 VBA 代码?

excel - 突出显示行中特定单元格的值与前一行的值不同的单元格

excel - 简单的循环,但通过 50 000+ 行

excel - 将宏从一个 Excel 工作表添加到另一个工作表

excel - 如何在当前单元格上使用 HYPERLINK 和 VLOOKUP?

excel - 如何在excel中获取3个斜杠后的字符串

html - VBscript HTML 应用程序中的等待函数

c++ - VB和C++ ActiveX控件以不同的方式保存其信息,我如何实现C++ ActiveX控件来替换VB ActiveX?

excel - 在 Excel VBA 中切换工作表

vba - 设置 PivotItem.Visible = false 时无法设置 PivotItem 类的 Visible 属性