使用命名范围(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] 

(例如,这个expression式可以用于数据validation)

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

期待您的回答。

如果这是一个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