2016-12-11 76 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") 

这有助于为代码的可读性从那时起,我就知道这个引用“标题”一栏,而不是来回,看看哪列是如数字“2”。

我知道,这样的参考可以在Excel中使用来完成

=Tasks[Title] 

(例如这个表达式可以用于数据验证)

是否有可能引用列这样吗?我对VBA很感兴趣,所以我不太确定。

期待您的回答。

+0

弄来它已经,Gonik? –

回答

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