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