VBA中的头函数

VBA中的头函数,vba,function,excel,columnheader,Vba,Function,Excel,Columnheader,我在Excel VBA中有一个函数,用于搜索标题并使用它们定义某些范围。它看起来可以很好地工作,但当我调用它时,它在这一行中断:Set rngHeaders=Intersect(工作表(sheetName)。UsedRange,工作表(sheetName)。Rows(ROW_HEADERS)),我不知道为什么。它给了我一个下标超出范围的错误。sheetName变量是一个字符串,并且sheet Sheet8(我正在传递给它)确实存在。除了我在Sub中调用它的那一行之外,我还发布了下面的整个函数。任

我在Excel VBA中有一个函数,用于搜索标题并使用它们定义某些范围。它看起来可以很好地工作,但当我调用它时,它在这一行中断:
Set rngHeaders=Intersect(工作表(sheetName)。UsedRange,工作表(sheetName)。Rows(ROW_HEADERS))
,我不知道为什么。它给了我一个下标超出范围的错误。sheetName变量是一个字符串,并且sheet Sheet8(我正在传递给它)确实存在。除了我在Sub中调用它的那一行之外,我还发布了下面的整个函数。任何帮助都将不胜感激

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区分工作表
.Name
属性和
.CodeName
属性
.CodeName
是指在VBA项目树视图中可见的名称(通常为Sheet1、Sheet2等)。
.Name
位于
.CodeName
后面的括号中。此外,
.Name
是Excel前端工作表选项卡中的值

如果将
.CodeName
传递到
工作表
集合,它将生成错误(除非
.CodeName
.Name
相同)


希望这会有所帮助。

它甚至没有到达那一行…它在定义
rngHdrFound
之前就在这一行中断了。您能在调用函数的那一行中尝试以下操作吗:将第二行[
sheetName=“Sheet8”
]更改为
sheetName=Sheet8.Name
ahh我的错了,如果你做了
MsgBox工作表(sheetName)。Name
发生了什么事?@user3561813成功了!一定是有名字的东西!谢谢