如何在excel VBA中引用命名表列?

时间:2015-01-29 14:02:50

标签: excel-vba vba excel

将Item属性与Cells属性一起使用的语法如下:

Cells.Item(Row,Column)

您必须为Row使用数值,但您可以使用Column的数值或字符串值。以下两行都涉及单元格C5:

Cells(5,"C")
Cells(5,3)

因为Item属性是RANGE对象的默认属性,所以可以按如下方式缩短这些行:

Cells(5,"C")
Cells(5,3)

我最近发现你可以这样做:

For Each cell In Range("A2:A3")
Cells(cell.Row,3)

我该怎么做(我需要正确的语法)

For Each cell In Range("A2:A3")
Cells(cell.Row,cell.Row.NamedColumn"Customer")

2 个答案:

答案 0 :(得分:3)

您应该选择E列并为CUSTOMER分配range name。然后,您可以在代码中将其引用为Range("CUSTOMER"),将其列号引用为Range("CUSTOMER").Column。如果您剪切此列并将其粘贴到其他位置,则其名称将随之附带,因此代码中的引用将保持有效。

答案 1 :(得分:2)

一种方法是在标题行中搜索要使用的列名。返回的Range对象的column属性指示您要使用的列。请参阅以下代码,如果您需要其他帮助,请告诉我们。

Sub LocateByHeader()
    Dim rngFnder As Range
    Dim rngHeader As Range

    Const HEADER_ROW As Integer = 1

    Set rngHeader = Intersect(Sheet1.Rows(HEADER_ROW), Sheet1.UsedRange)

    Set rngFnder = rngHeader.Find("Customer")

    If rngFnder Is Nothing Then
        'Do some code in  case the header isn't there
    Else
        ' rngFnder.Column will give the index of the column with the customer name
    End If

End Sub