在 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”
请注意可能会挥发性此功能存在问题。