迭代Excel VBA或VSTO 2005中的所有单元格

Rya*_*ang 23 excel vba vsto excel-vba

我需要简单地浏览Excel电子表格中的所有单元格并检查单元格中的值.单元格可能包含文本,数字或空白.我不太熟悉/舒适地使用'Range'的概念.因此,非常感谢任何样本代码.(我确实试图谷歌它,但我发现的代码片段并不完全符合我的需要)

谢谢.

cor*_*ori 57

如果您只需要查看正在使用的单元格,您可以使用:

sub IterateCells()

   For Each Cell in ActiveSheet.UsedRange.Cells
      'do some stuff
   Next

End Sub
Run Code Online (Sandbox Code Playgroud)

这将击中从A1到最后一个包含数据的单元格中的所有内容(最右边的单元格)

  • 哇...比workheet.cells好多了,我的系统崩溃了! (2认同)

bet*_*uce 7

Sub CheckValues1()
    Dim rwIndex As Integer
    Dim colIndex As Integer
    For rwIndex = 1 To 10
            For colIndex = 1 To 5
                If Cells(rwIndex, colIndex).Value <> 0 Then _
                    Cells(rwIndex, colIndex).Value = 0
            Next colIndex
    Next rwIndex
End Sub
Run Code Online (Sandbox Code Playgroud)

http://www.java2s.com/Code/VBA-Excel-Access-Word/Excel/Checksvaluesinarange10rowsby5columns.htm上找到这个片段.它似乎非常有用,可以说明检查有序单元格中值的方法时尚.

想象一下它是一个二维数组,并应用相同的逻辑循环遍历单元格.

  • 循环遍历范围中的每个单元的代码效率极低.将范围读入数组,对数组进行检查/更改,然后将数组写回范围.我们同意停止使用此代码,它可能会消失. (4认同)

Jon*_*ier 5

如果您只是查看单元格的值,则可以将值存储在变体类型的数组中.看起来获取数组中元素的值比使用Excel进行交互要快得多,因此与重复获取单个单元格相比,使用所有单元格值的数组可以看到性能的差异.

Dim ValArray as Variant
ValArray = Range("A1:IV" & Rows.Count).Value
Run Code Online (Sandbox Code Playgroud)

然后你可以通过检查ValArray(行,列)得到一个单元格值