2015-02-20 4 views
1

У меня есть функция в Excel VBA, которая ищет заголовки и использует их для определения определенных диапазонов. Похоже, что все будет отлично, но когда я его назову, он разрывается на этой строке: Set rngHeaders = Intersect(Worksheets(sheetName).UsedRange, Worksheets(sheetName).Rows(ROW_HEADERS)), и я не уверен, почему. Это дает мне индекс ошибки вне диапазона. Переменная sheetName - это строка, и лист Sheet8 (который я перехожу в нее) существует. Я добавил всю функцию ниже в дополнение к строке, где я называю ее в Sub. Любая помощь будет принята с благодарностью.Функция заголовка в VBA

Function FindHeader(HEADER_NAME As String, sheetName As String) As Range 

    Dim rngHeaders As Range 
    Dim rngHdrFound As Range 

    Const ROW_HEADERS As Integer = 1 

    Set rngHeaders = Intersect(Worksheets(sheetName).UsedRange, Worksheets(sheetName).Rows(ROW_HEADERS)) 
    Set rngHdrFound = rngHeaders.Find(HEADER_NAME) 

    If rngHdrFound Is Nothing Then 
     MsgBox ("ERROR: Cannot find appropriate header.") 
     Exit Function 
    End If 

    Set FindHeader = Range(rngHdrFound.Offset(1), rngHdrFound.End(xlDown)) 

End Function 

линия, которая называет его:

Sheet8.Activate 
sheetName = "Sheet8" 
Set rng1 = FindHeader("Client Exclusion List", sheetName) 
+0

Он даже не добирается до этой строки ... Он разбивается на строку до определения 'rngHdrFound'. – Philip

+1

Можете ли вы попробовать следующее в строке, которая вызывает вашу функцию: Измените вторую строку '' sheetName = "Sheet8" '] на' sheetName = Sheet8.Name' – user3561813

+0

ahhh my bad, подумал, что она ломается на 'Set FindHeader .. .' –

ответ

1

VBA различает Таблицы .Name собственности и .CodeName собственности. .CodeName относится к имени, видимому в представлении дерева проектов VBA (обычно Sheet1, Sheet2 и т. Д.). .Name находится в скобках сразу после .CodeName. Кроме того, .Name - это значение на вкладке «Рабочий лист» на лицевой части Excel.

Если вы передаете .CodeName к Worksheets коллекции, он будет генерировать ошибку (если .CodeName и .Name не идентичны).

Надеюсь, это поможет.

Смежные вопросы