String 常量字符串赢得';不允许变量作为用户名
使用此选项时,我会收到一条常量表达式错误消息:String 常量字符串赢得';不允许变量作为用户名,string,excel,expression,constants,vba,String,Excel,Expression,Constants,Vba,使用此选项时,我会收到一条常量表达式错误消息: Const FName As String = "c:\users\" & AGuser & _ "\documents\Appraiser_Genie\working\graphs.jpg" 如果您有任何建议,我们将不胜感激。正如其他人所指出的,并且编译器将告诉您,常量表达式不能包含变量信息、函数调用或任何在编译时无法计算的内容。因此,这是行不通的: Const FName A
Const FName As String = "c:\users\" & AGuser & _
"\documents\Appraiser_Genie\working\graphs.jpg"
如果您有任何建议,我们将不胜感激。正如其他人所指出的,并且编译器将告诉您,常量表达式不能包含变量信息、函数调用或任何在编译时无法计算的内容。因此,这是行不通的:
Const FName As String = "c:\users\" & AGuser & "\documents\Appraiser_Genie\working\graphs.jpg"
Public AGuser as String
Sub foo()
Aguser = Environ("username")
End Sub
这也不会:
Const FName As String = "c:\users\" & Environ("username") & "\documents\Appraiser_Genie\working\graphs.jpg"
等等
我通常的处理方法是使用常量表达式和带有Replace
函数的局部/过程级变量
Const FName As String = "c:\users\%username%\documents\Appraiser_Genie\working\graphs.jpg"
Sub foo()
Dim path As String
Dim AGUser as String
AGUser = Environ("username") 'Modify if you need to do something else...
path = Replace(FName, "%username%", AGUser)
MsgBox path
End Sub
或者,只需创建一个名为FName
的函数,该函数返回字符串:
Option Explicit
Public Function FName() As String
FName = "c:\users\" & Environ("Username") & "\documents\Appraiser_Genie\working\graphs.jpg"
End Function
Sub test()
MsgBox FName
End Sub
常数不能包含变量。