2016-12-11 2 views
1

Пожалуйста, посмотрите на эту таблицу, которую я назвал «Задачи»:Работа с определенного столбца в именованный диапазон (Excel VBA)

enter image description here

Это очень простой диаграммы Ганта, как стол. Используя 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") 

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

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

=Tasks[Title] 

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

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

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

+0

вы получите его уже, Гоника? –

ответ

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 
Смежные вопросы