Excel 多用户环境函数

Excel 多用户环境函数,excel,vba,Excel,Vba,我试图使用environ函数只允许某些用户使用文档 这是我的问题:它使用一个用户名,而不是几个用户名 我知道嵌套循环可能是一种解决方案,但我认为可能有一种更简单的方法。参考表也无法成功运行 当前代码看起来像 If ((IDnumber=“12345”) or (IDnumber=“1234”) or IDnumber=“123”)) then Msgbox “approved” Else: msgbox “denied” Select Case是要使用的适当语句,如下所示: Dim str

我试图使用environ函数只允许某些用户使用文档

这是我的问题:它使用一个用户名,而不是几个用户名

我知道嵌套循环可能是一种解决方案,但我认为可能有一种更简单的方法。参考表也无法成功运行

当前代码看起来像

If ((IDnumber=“12345”) or (IDnumber=“1234”) or IDnumber=“123”))  then 
Msgbox “approved”
Else: msgbox “denied”

Select Case
是要使用的适当语句,如下所示:

Dim strMsg as String
Select Case IDnumber
    Case 12345, 1234, 123
        strMsg = "Approved"
    Case Else
        strMsg = "Denied"
End Select
Msgbox strMsg
如果变量
IDnumber
是一个字符串(在这种情况下,变量名称选择错误!),则在列表中的每个项目周围使用引号:

Dim strMsg as String
Select Case IDnumber
    Case "alpha", "bravo", "charlie"
        strMsg = "Approved"
    Case Else
        strMsg = "Denied"
End Select
Msgbox strMsg

人们可能会争论使用
Select Case
(正如奥利所建议的)或
是否是更好的解决方案。
但是,
If
的语法是

If IDnumber = "12345" Or IDnumber = "1234" Or IDnumber = "123" Then
    MsgBox "approved"
Else
    MsgBox "denied"
End if
您的代码片段中有几个错误:

  • 不平衡括号。在您的例子中,根本不需要任何括号。在VBA中(与许多其他语言不同),不需要将整个逻辑术语用括号括起来。此外,无需将单个或多个条件括在括号中
  • 正如Marcucciboy2在评论中所说的,错误的引用字符,请使用
  • 语法
    else:MsgBox
    是有效的,但不是一个好的样式。
    分隔了两条语句,最好写两行。无论如何,如果
语句,您需要一个结尾
End

允许的用户名可以作为数组传递,然后检查当前用户名是否在该数组中。
valueInArray()
正是这样做的:

Sub CheckUser()

    Dim userNames As Variant
    userNames = Array("User1", "User2", "User3")

    If valueInArray(Environ("UserName"), userNames) Then
        Debug.Print "User Present"
    Else
        Debug.Print "User Not Present"
    End If

End Sub


Public Function valueInArray(myValue As Variant, myArray As Variant) As Boolean

    Dim cnt As Long
    For cnt = LBound(myArray) To UBound(myArray)
        If LCase(CStr(myValue)) = CStr(myArray(cnt)) Then
            valueInArray = True
            Exit Function
        End If
    Next cnt

End Function

选择大小写很容易。你的左括号和右括号不匹配。完全不需要。如果IDnumber=“12345”或IDnumber=“1234”或IDnumber=“123”,请尝试使用
最后,如果你用电话重新键入,请使用idk,但如果你从模块中直接复制了此内容,则
您使用的引号不是vba的正确unicode引号”
第一行中是否有更多的代码,或者只是一个输入错误?它有3个开括号,但有4个闭括号,因此我希望它抛出语法错误并突出显示自己。您看到的其他错误是我在手机上键入的bc。Thx。