首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >迭代已填充的行

迭代已填充的行
EN

Stack Overflow用户
提问于 2014-06-24 09:53:03
回答 3查看 244K关注 0票数 52

因此,我尝试使用VBA遍历Excel电子表格中的工作表。我想遍历每一行,然后遍历每一列,尽管我在谷歌上搜索,但我实际上找不到一种直观的方法来做到这一点。

我假设必须填充一行的第一个单元格,如果没有填充,那么这一定是结束。我可以强制执行此操作

我目前的方法是遍历各行,然后尝试获取第一个单元格的值,但我无法计算出它。我在这里和其他地方遇到了一些使用范围之类的问题,但没有任何帮助我编写代码的问题。

目前的做法是:

Set sh = ActiveSheet
RowCount = 0
For Each rw In sh.Rows
    'If Row.Cells(1, 1).Value = "" Then Exit For
    RowCount = RowCount + 1
Next rw
MsgBox (RowCount)

现在,当我运行这个程序时,我得到了一些巨大的数字,这是错误的,因为表只有大约25行。我注释掉了第一行,因为它不工作。

当For循环找到第一个单元格为空的行时,我可以对循环的第一行进行什么更改才能正确地中断?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-24 10:15:53

看起来您只是对行和列进行了硬编码;否则,只需进行几个小调整,我认为您就可以了:

Dim sh As Worksheet
Dim rw As Range
Dim RowCount As Integer

RowCount = 0

Set sh = ActiveSheet
For Each rw In sh.Rows

  If sh.Cells(rw.Row, 1).Value = "" Then
    Exit For
  End If

  RowCount = RowCount + 1

Next rw

MsgBox (RowCount)
票数 74
EN

Stack Overflow用户

发布于 2015-10-29 23:56:37

为了方便任何搜索相似内容的人,请参阅worksheet .UsedRange

例如? ActiveSheet.UsedRange.Rows.Count

和循环,如

For Each loopRow in Sheets(1).UsedRange.Rows: Print loopRow.Row: Next

票数 86
EN

Stack Overflow用户

发布于 2014-06-24 11:29:17

我将在我的答案中做几个假设。我假设您的数据是从A1开始的,并且在包含数据的每一行的第一列中没有空单元格。

此代码将:

  1. 查找列A中具有data

的最后一行

  1. 循环遍历每一行
  2. 查找当前行中具有data

的最后一列

  1. 循环遍历当前行中的每个单元格直到找到最后一列。

这不是一个快速的方法,但会像您建议的那样逐个迭代。

Sub iterateThroughAll()
    ScreenUpdating = False
    Dim wks As Worksheet
    Set wks = ActiveSheet

    Dim rowRange As Range
    Dim colRange As Range

    Dim LastCol As Long
    Dim LastRow As Long
    LastRow = wks.Cells(wks.Rows.Count, "A").End(xlUp).Row

    Set rowRange = wks.Range("A1:A" & LastRow)

    'Loop through each row
    For Each rrow In rowRange
        'Find Last column in current row
        LastCol = wks.Cells(rrow, wks.Columns.Count).End(xlToLeft).Column
        Set colRange = wks.Range(wks.Cells(rrow, 1), wks.Cells(rrow, LastCol))

        'Loop through all cells in row up to last col
        For Each cell In colRange
            'Do something to each cell
            Debug.Print (cell.Value)
        Next cell
    Next rrow
    ScreenUpdating = True
End Sub
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24377197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档