Как циклично выполниться хотя таблица и объекты строки доступа их заголовком столбца?

У меня есть следующий макрос, который должен циклично выполниться хотя таблица Excel 2007. Таблица имеет несколько столбцов, и я в настоящее время нахожу корректную позицию столбцов с помощью Index столбцы свойства.

Используя индекс единственный способ, которым я мог найти для корректной индексации в fName объект. Более оптимальный вариант, на который я надеюсь, состоит в том, чтобы получить доступ к определенным столбцам с помощью Имени столбца / Заголовок. Как я могу сделать это, и это может быть даже сделано?

Кроме того, в целом, существует ли лучший способ создать этот цикл?

Worksheets("Lists").Select

Dim filesToImport As ListObject 
Dim fName As Object
Dim fileNameWithDate As String

Dim newFileColIndex As Integer
Dim newSheetColIndex As Integer
Set filesToImport = ActiveSheet.ListObjects("tblSourceFiles")

newFileColIndex = filesToImport.ListColumns("New File Name").Index // <- Can this be different?

For Each fName In filesToImport.ListRows // Is there a better way?
    If InStr(fName.Range(1, col), "DATE") <> 0 Then
        // Need to change the ffg line to access by column name
        fileNameWithDate = Replace(fName.Range(1, newFileColIndex).value, "DATE", _
                                  Format(ThisWorkbook.names("ValDate").RefersToRange, "yyyymmdd"))
        wbName = OpenCSVFIle(fPath & fileNameWithDate)
        CopyData sourceFile:=CStr(fileNameWithDate), destFile:=destFile, destSheet:="temp"
    End If

Next fName2
5
задан Community 9 July 2018 в 19:34
поделиться

1 ответ

Если вы хотите найти определенное значение в заголовке столбца, вы можете использовать метод find. Метод find возвращает диапазон, который вы можете использовать в качестве ссылки для выполнения остальных операций. Метод find имеет множество необязательных параметров, прочитайте об этом в справочной документации, если вам нужно настроить его подробнее.

Dim cellsToSearch As Range
Dim foundColumn As Range
Dim searchValue As String

Set cellsToSearch = Sheet1.Range("A1:D1")  ' Set your cells to be examined here
searchValue = "Whatever you're looking for goes here"

Set foundColumn = cellsToSearch.Find(What:=searchValue)
0
ответ дан 18 December 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: