VBA:使用string常量指定范围

我试图做一个简单的函数来计算代码为LINES的工作表中列出的pipe道数量。 行中列出行的范围是$ A $ 2:$ A $ 1048576,我已经命名范围“LineList”。 我已经创build了一个包含所有硬编码全局常量的模块,以便将来可以轻松修改它们。 LineList范围的名称是其中的一个,定义如下:

Public Const LINELIST_RNG As String = "LineList" 

我的function如下。 出于某种原因,由于LINELIST_RNG为空,此命令失败:

 Function numLines() As Integer numLines = WorksheetFunction.CountA(LINES.Range(LINELIST_RNG)) End Function 

但是,如果我将范围名称硬编码到这个函数,它工作正常:

 numLines = WorksheetFunction.CountA(LINES.Range("LineList")) 

我不确定为什么.Range对象不能将LINELIST_RNG作为参数,但会采用“LineList”。

下面的代码工作正常:

 Option Explicit Public Const LINELIST_RNG As String = "LineList" Public Sub test() Dim r1 As Range Dim r2 As Range Set r1 = Sheets(1).Range("LineList") Set r2 = Sheets(1).Range(LINELIST_RNG) MsgBox r1.Cells(1, 1).Value MsgBox r2.Cells(1, 1).Value End Sub 

所以你的代码中必须有其他的东西。 打开选项明确,它可能会指出你在正确的方向

看来这个问题是由我单元中的声明顺序引起的。 给出上下文,声明

 Public Const LINELIST_RNG As String = "LineList" Function numLines() As Integer 

是在公共Const和Function声明列表之后完成的,因此他们不工作。

我的模块看起来像:

 Public Const ... Public Const ... Function blabla1 ... Function blabla2 ... Public Const LINELIST_RNG ... Function numLines() As Integer ... 

现在我已经将所有公共常量声明移动到模块的开头,一切正常。