在VBA中的标题function

Excel VBA中有一个函数用于search标题,并使用它们来定义特定的范围。 它看起来像它会工作得很好,但是当我打电话,它打破了这一行: Set rngHeaders = Intersect(Worksheets(sheetName).UsedRange, Worksheets(sheetName).Rows(ROW_HEADERS)) ,我不知道为什么。 它给我一个下标超出范围的错误。 sheetNamevariables是一个string,Sheet8(我传入它)确实存在。 我已经发布了下面的整个函数,除了我在子类中调用它的行。 任何帮助将不胜感激。

 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) 

VBA区分Worksheets .Name属性和.CodeName属性。 .CodeName引用在VBA项目树视图(通常是Sheet1,Sheet2等)中可见的名称。 .Name位于.CodeName后面的括号中。 此外, .Name是Excel前端工作表选项卡中的值。

如果将.CodeName传递给Worksheets集合,它将生成一个错误(除非.CodeName.Name是相同的)。

希望这有助于。