Excel 多用户环境函数
我试图使用environ函数只允许某些用户使用文档 这是我的问题:它使用一个用户名,而不是几个用户名 我知道嵌套循环可能是一种解决方案,但我认为可能有一种更简单的方法。参考表也无法成功运行 当前代码看起来像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
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。