【问题标题】:Header function in VBAVBA 中的标头函数
【发布时间】: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


【解决方案1】:

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

如果将.CodeName 传递给Worksheets 集合,则会产生错误(除非.CodeName.Name 相同)。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-21
    • 2011-08-12
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    相关资源
    最近更新 更多