【发布时间】:2015-02-20 15:52:19
【问题描述】:
我在 Excel VBA 中有一个函数可以搜索标题并使用它们来定义某些范围。看起来它可以正常工作,但是当我调用它时,它会在这条线上中断:Set rngHeaders = Intersect(Worksheets(sheetName).UsedRange, Worksheets(sheetName).Rows(ROW_HEADERS)),我不知道为什么。它给了我一个下标超出范围的错误。 sheetName 变量是一个字符串,并且工作表 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)
【问题讨论】:
-
它甚至没有到达那一行...它在定义
rngHdrFound之前就中断了。 -
您能否在调用您的函数的行中尝试以下操作:将第二个 [
sheetName = "Sheet8"] 行更改为sheetName = Sheet8.Name -
啊,我的错,我以为它在
Set FindHeader...上崩溃了 -
如果你这样做
MsgBox Worksheets(sheetName).Name会发生什么? -
@user3561813 成功了!一定是有名字的东西!谢谢!
标签: vba function excel columnheader