VBA Excel – Macscript在使用IIF时在Windows上导致问题

我正在创build一个macros,用于打开每个人都在计算机上的文件,为此必须知道该用户的用户名/工作ID。 要获得该人的工作ID,我尝试使用以下内容:
sso = IIf(InStr(Application.OperatingSystem, "Windows") = 1, Environ("UserName"), _ 'MacScript("(user name as string)"))
在Windows上运行这个返回一个错误,因为Macscript(我认为),我会假设同样会发生反之亦然,即使错误部分的IIF是从来没有实际访问我猜整个行被执行看到这就是为什么有一个问题,因此On Error Resume Next在这里不会有帮助。

我知道这可以很容易地通过使用if和else语句来克服,但我只想知道我是否正确/为什么会出现这个问题,以及是否有其他更复杂的方法来实现我想要的。

谢谢

IIFfunction评估真假部分,或者试图这样做。 没有短路。 你为什么失败(也不能使用OERN )的假设是正确的。 如果代码的某些部分无法在Windows(或Mac)上编译,则可以查看条件编译逻辑。

http://msdn.microsoft.com/en-us/library/aa240847(v=vs.60).aspx