我正在尝试将工作表单元格的值分配给VBA宏中的常量变量。该操作背后的逻辑是最终用户应该在运行宏之前在指定的单元格中输入当前周。由于这个值将在整个宏中重用,并且我想安全地玩它,我试图将它声明为公共常量:
private const thisWeek as Integer = Range("B1")
但是我收到有关需要的常量值的错误消息。那么,甚至可以在VBA中声明这样的常量吗?
答案 0 :(得分:3)
不,不可能。正如单词所示,它应该是常量。
解决方法:强>
Public Const weekRange As String = "$B$1"
然后在您的代码中
Sub Something()
Dim thisWeek As Integer: thisWeek = Range(weekRange).Value
'~~> some codes here
End Sub
答案 1 :(得分:2)
来自帮助:您不能在分配给常量的表达式中使用变量,用户定义的函数或内部Visual Basic函数(如Chr)。
在您的情况下,您必须使用变量。
答案 2 :(得分:0)
我知道这已经过时了,但我本来想要自己做这件事并想出来。我使用了一个函数:
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,我只是用它来减少打字。)