Работа с конкретным столбцом в именованном диапазоне (Excel VBA)

Взгляните на эту таблицу, которую я назвал «Задачи»:

введите описание изображения здесь

Это очень простая таблица в виде диаграммы Ганта. Используя VBA, я использую данные из этой таблицы для выполнения некоторых задач на других листах.

У меня есть цикл For, который проходит через каждую строку следующим образом:

For i = 1 To Range("Tasks").Rows.Count
    Worksheets("Calendar").Cells(i,2).Value = Range("Tasks").Cells(i,2)
End For

В цикле For есть много других операций, но это выходит за рамки моего вопроса. По сути, это означает, что он просматривает всю таблицу и выполняет различные операции и вычисления (если применимо), что приводит к заполнению других ячеек на других листах.

У меня такой вопрос:

Поскольку все столбцы в таблице помечены, я хотел бы как-то указать имя столбца, а не номер столбца в цикле, если это, конечно, возможно.

Например:

Worksheets("Calendar").Cells(i, 2).Value = Range("Tasks").Cells(i, "Title")

Это помогает для удобочитаемости кода, поскольку тогда я буду знать, что это ссылается на столбец «Заголовок», вместо того, чтобы переходить туда и обратно, чтобы увидеть, например, какой столбец цифра «2».

Я знаю, что такую ​​ссылку можно сделать в Excel, используя

=Tasks[Title]

(например, это выражение можно использовать для проверки данных)

Можно ли ссылаться на такие столбцы? Я относительно новичок в VBA, поэтому не совсем уверен.

Жду вашего ответа.


person Gonik    schedule 11.12.2016    source источник
comment
ты уже понял, Гоник?   -  person alexandre9865    schedule 27.05.2017


Ответы (1)


если это таблица Excel, вы можете использовать

  Dim lo As ListObject
  Dim col As ListColumn
  Dim r As Range

  Set lo = ActiveSheet.ListObjects("Tasks")
  Set col = lo.ListColumns.Item("Title")
  r = col.DataBodyRange

  For i = 1 To Range("Tasks").Rows.Count
      Worksheets("Calendar").Cells(i,2).Value = r.Cells(i)
  End For
person MacroMarc    schedule 11.12.2016