У меня есть следующий макрос, который должен циклично выполниться хотя таблица 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
Если вы хотите найти определенное значение в заголовке столбца, вы можете использовать метод 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)