Для каждой ошибки компиляции (несколько диапазонов) - PullRequest
0 голосов
/ 03 мая 2018

Все,

Я уверен, что есть быстрый ответ, однако это расстроило меня на хороший час, поэтому извиняюсь, если вопрос очень простой.

У меня есть цикл «Для каждого», который необходимо выполнить несколько раз, однако, когда я набираю более двух диапазонов, для повторного просмотра ошибки снимка экрана отображается.

    Dim TargetCell As Range, ICol As Integer
    Set TargetCell = Rows("9").Find(What:="Forecast", LookIn:=xlValues, LookAt:=xlPart)
    If Not TargetCell Is Nothing Then ICol = TargetCell.Column



For Each c In Range(Cells(12, ICol), Cells(18, 73), Cells(19, ICol), Cells(42, 73), Cells(47, ICol), Cells(53, 73), Cells(55, ICol), Cells(76, 73))

любая помощь с ошибкой будет принята с благодарностью

Сообщение об ошибке компиляции:
enter image description here

***** UPDATE

Я обновил свой код, чтобы иметь союзы. Это решило проблему с помощью форумов. Пожалуйста, смотрите новый код ниже;

Dim Rng1, Rng2, Rng3, Rng4 As Range

Set Rng1 = Range(Cells(12, ICol), Cells(18, 73))
Set Rng2 = Range(Cells(19, ICol), Cells(42, 73))
Set Rng3 = Range(Cells(47, ICol), Cells(53, 73))
Set Rng4 = Range(Cells(55, ICol), Cells(76, 73))

 Dim C as variant
    For Each c In Union(Rng1, Rng2, Rng3, Rng4)

Отправка ответа на будущее

1 Ответ

0 голосов
/ 03 мая 2018

Существует довольно много способов сделать петлю из ячеек. Как уже упоминалось в комментариях, Range.Union действительно хорошая идея. Другой способ - поместить все ячейки в один массив и циклически перебрать их так:

Option Explicit

Public Sub TestMe()

    Dim c As Variant
    Dim Icol As Long:    Icol = 5

    For Each c In Array(Cells(12, Icol), Cells(18, 73), Cells(19, Icol), Cells(42, 73))
        Debug.Print c.Address
        c.Interior.Color = vbRed
    Next c

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...