Ссылка на ячейку только по имени столбца в 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")
но я не могу найти примеры, где я могу указать только имя столбца без указания строки.
Это вообще возможно?
2 ответа
Код из другого ответа не скомпилировал для меня, но позволил мне провести дальнейшее исследование.
Вдохновленный Как я зациклить таблицу 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
Рассматривать:
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
В этом примере я "назвал" столбец B "qwerty"
Обратите внимание, что с этой функцией могут возникнуть проблемы с волатильностью.