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

常数不能包含变量。