在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
是相同的)。
希望这有助于。