在 Excel 2010 VBA 中仅通过列名引用单元格

在 Excel 2010 VBA 中仅通过列名引用单元格

在 Excel 2010 中,我需要逐行浏览数据表并在 VBA 中操作数据。

我原来的功能如下:

Private Function GetValue(ByVal myRange As Excel.Range, ByVal strCol As String) As String
    Dim myCell As Object
    Set myCell = myRange.Cells(, strCol) 
    GetValue = myCell.Value 
End Function

我这样称呼它:

GetValue(myRow, "AE")  

myRow是一个代表行的 Excel.Range。
"AE"是列索引。

我想转换为使用列名而不是列索引,因为用户将来可能会选择添加或删除列。我在 Excel 中将单元格范围标识为表格,命名表格,并选择唯一的列名。

这意味着我现在可以使用以下命令调用该函数:

GetValue(myRow, "column_name")

但是我找不到可以仅指定列名而不指定行的示例。

这可行吗?

答案1

代码来自其他答案没有为我编译,但它允许我进行进一步的研究。

灵感来自如何使用其名称和列引用循环 Excel 2010 表?如何循环遍历表格并通过列标题访问行项?,我最终使用了:

Private Function GetValue(ByVal myRange As Excel.Range, ByVal strCol As String) As String
    GetValue = myRange.Columns(myRange.ListObject.ListColumns(strCol).Range.Column).Value
End Function

答案2

考虑:

Public Function GetValue2(ByVal myRow As Long, ByVal strColumnName As String) As String
    Dim myCell As Object

    Set myCell = Cells(myRow, Range(strColumnName).Column)
    GetValue2 = myCell.Value
End Function

在这个例子中,我“命名”了列“qwerty” 的发音:如何用英语发音“qwerty”

在此处输入图片描述

请注意可能会挥发性此功能存在问题。

相关内容