Определите набор несмежных ячеек - PullRequest
1 голос
/ 03 августа 2020

В VBA несколько соседних ячеек можно изменить одновременно с помощью символа «for» l oop. Например:

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. Что я мог сделать, чтобы не писать код трижды? Есть ли способ определить набор ячеек и запустить код для каждой один раз?

Ответы [ 2 ]

3 голосов
/ 03 августа 2020

Вы можете l oop вместо 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

но я полагаю, что ваш реальный вариант использования более сложен, чем этот упрощенный пример.

EDIT :

Также проще:

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

, но все же не совсем понятно, что вы хотите сделать.

1 голос
/ 03 августа 2020

Обратите внимание на следующий код:

  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...