将工作表单元格的值分配给常量

我正在尝试将工作表单元格的值分配给VBAmacros中的常量variables。 该行动背后的逻辑是,在运行macros之前,最终用户应该在指定单元格中input当前星期。 由于这个值将在整个macros中被重复使用,我想要保证它的安全性,我试图把它作为一个公共常量来声明:

private const thisWeek as Integer = Range("B1") 

不过,我得到一个关于一个常量值需要的错误消息。 那么,甚至可以在VBA中声明这样一个常量?

不,这是不可能的。 正如这个词所表明的,它应该是不变的

解决方法:

 Public Const weekRange As String = "$B$1" 

然后在你的代码中:

 Sub Something() Dim thisWeek As Integer: thisWeek = Range(weekRange).Value '~~> some codes here End Sub 

从帮助:在分配给常量的expression式中,不能使用variables,用户定义函数或内部Visual Basic函数(如Chr)。

在你的情况下,你必须使用一个variables。

我知道这是旧的,但我正在寻找这样做,并提出了这一点。 我使用一个函数:

 Function insertPNA(strSource As Long) As String Dim strResult As String strResult = Replace(strSource, strSource, ThisWorkbook.Sheets("Audits & Actuals").Range("pnacode").Value) insertPNA = strResult End Function 

每当我想要pna代码,我只需键入insertpna(1)。 希望有人认为这有用。 (它不一定是“1”obvs,我只是用它来最小化打字。)