2

В 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.Диапазон, представляющий строку.
"AE" - индекс столбца.

Я хочу преобразовать использование имен столбцов вместо индексов столбцов, потому что пользователи могут добавлять или удалять столбцы в будущем. Я определил диапазон ячеек в виде таблицы в Excel, назвал таблицу и выбрал уникальные имена столбцов.

Это означает, что я бы сейчас вызвал функцию, используя:

GetValue(myRow, "column_name")

но я не могу найти примеры, где я могу указать только имя столбца без указания строки.

Это вообще возможно?

2 ответа2

3

Код из другого ответа не скомпилировался для меня, но позволил мне провести дальнейшее исследование.

Вдохновленный Как я зациклить таблицу 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
1

Рассматривать:

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"

Обратите внимание, что с этой функцией могут возникнуть проблемы с волатильностью .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .