繁体   English   中英

定义一组不相邻的单元格

[英]Define a set of non-adjacent cells

在 VBA 中,可以使用“for”循环一次修改几个相邻的单元格。 例如:

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

现在,让我们假设单元格不相邻。 例如,我想修改单元格 A3:B8、D9:V9 和 C7:F2。 有什么办法不用写三遍代码? 有没有办法定义一组单元格并让代码为每个单元格运行一次?

您可以遍历Areas

Sub Test()
    Dim rng As Range
    For Each rng In Range("A3:B8,D9:V9,C7:F2").Areas
        Dim cell As Range
        For Each cell In rng
            cell.Value = 100
        Next
    Next
End Sub

请注意,整个内容可以替换为:

Range("A3:B8,D9:V9,C7:F2").Value = 100

但我想你的实际用例比这个简化的例子更复杂。

编辑

也更简单:

Dim rng As Range
For Each rng In Range("A3:B8,D9:V9,C7:F2")
    rng.Value = 100
Next

但仍然不清楚你想要做什么。

请看下面的代码:

  Dim sh As Worksheet, rng As Range, C As Range, i As Long

  Set sh = ActiveSheet
   Set rng = sh.Range("A3:B8, D9:V9, C7:F2")
   rng.Value = 100
   rng.Select 'it is not necessary for the following loop. Only for you to better visualize the range...
   For Each C In rng.cells
      C.Value = C.Value + i: i = i + 1
   Next
   'you can see how the range is parsed (left to right, then down...)
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM