为表格中的每一列命名excel / vba

时间:2017-08-18 15:30:11

标签: vba excel-vba loops named excel

我正在尝试按标题为excel电子表格中的每一列命名。例如,如果一列有标题" cat"我想要将列命名为#34; cat"。这样我可以在公式中引用cat,而不是用A:A。

指定列

我可以使用单个列完成此操作,但是当我尝试使用多个列时,我的过程失败了。这是我的代码。

Sub defineName()

Dim numColumns As Long
Range("A1").Select
numColumns = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column



Columns("A:A").Select
For cat = 0 To numColumns
    Selection.Offset(0, I).Select
    ActiveWorkbook.Names.Add Name:=cat1, RefersToR1C1:="activesheet.cat1"
Next cat
End Sub

我很确定我的问题是这部分

 Name:=cat1, RefersToR1C1:="activesheet.cat1"

它并没有像我想的那样迭代。

我几乎希望自己可以

 Name:=[cat]1, RefersToR1C1:="activesheet.[cat]1"

但这也不起作用。有人有想法吗?

1 个答案:

答案 0 :(得分:1)

请参阅上面的建议,但这里是替代代码。命名整列虽然看起来效率不高。看过汤姆的建议后,我认为这是一种更好的方法。

Sub defineName()

Dim numColumns As Long, cat As Long

numColumns = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column

For cat = 1 To numColumns
    Columns(cat).Name = Cells(1, cat)
Next cat

End Sub