Получение 1004 при попытке выбора диапазона - PullRequest
0 голосов
/ 26 апреля 2018

Я получаю

1004 ошибка

во время выполнения макроса ниже, в строке
Worksheets("Testable").Range(Range("A2"), Range("A2").End(xlDown)).Select

Sub colour()
    Dim cell As Range

    Worksheets("Testable").Range(Range("A2"), Range("A2").End(xlDown)).Select
    For Each cell In Selection

        cell.EntireRow.Interior.ColorIndex = 33
    Next cell
End Sub

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Ниже вы найдете простой и надежный (на основе деталей в исходном вопросе) способ выполнения вашей задачи:

With Worksheets("Testable")
    .Range(.Range("A2"),.Range("A2").End(xlDown)).EntireRow.InteriorColorIndex = 33
End With

Причина, по которой вы получаете сообщение об ошибке

Worksheets("Testable").Range(Range("A2"), Range("A2").End(xlDown)).Select

потому, что две части Range("A2") оператора являются неквалифицированными, и Excel не знает, что с ними делать (особенно, если лист Testable не является активным листом). Уточняя их так, как я это делал выше, вы избегаете выбора объекта и работаете непосредственно с ним, оптимизируя выполнение кода.

0 голосов
/ 26 апреля 2018

Первая Select или Activate рабочая таблица. Тогда Select диапазон.

Вот рабочий пример:

Sub colour()
    Dim cell As Range
    Worksheets("Testable").Activate
    Worksheets("Testable").Range(Range("A2"), Range("A2").End(xlDown)).Select
    For Each cell In Selection
        cell.EntireRow.Interior.ColorIndex = 33
    Next cell
End Sub

enter image description here

РЕДАКТИРОВАТЬ # 2:
Чтобы избежать зацикливания и выбора, используйте что-то вроде:

Sub colourAlternative()
    Dim cell As Range
    With Worksheets("Testable")
        Set cell = Range(.Range("A2"), .Range("A2").End(xlDown)).EntireRow
    End With
    cell.Interior.ColorIndex = 33
End Sub

Здесь обсуждались три вещи:

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