Arrays 如何在vba中创建数组中的for循环

Arrays 如何在vba中创建数组中的for循环,arrays,vba,excel,Arrays,Vba,Excel,我已经尝试了一遍又一遍,但得到了相同的输出。我想在字符串数组中创建一个循环,但代码只访问第一个值。这是我尝试过的代码: name = Environ("username") user1= Array("name.name1", "name.name2") user2= Array("name1.name1", "name1.name2") For i = 0 To Size ' I used Size coz I will add more names If name = user1(

我已经尝试了一遍又一遍,但得到了相同的输出。我想在字符串数组中创建一个循环,但代码只访问第一个值。这是我尝试过的代码:

name = Environ("username")
user1= Array("name.name1", "name.name2")
user2= Array("name1.name1", "name1.name2")

For i = 0 To Size ' I used Size coz I will add more names
    If name = user1(i) Then
        MsgBox "User1"
    ElseIf name = user2(i) Then
        MsgBox "User2"
    Else
        errorLog
    End If
Next

提前感谢您的帮助

除非您为
Size
提供了显式声明和起始值,否则在
for
循环中使用时,它将采用值为0的变量数字类型

因此,对于i=0到0,您将得到
:即循环将迭代一次

在模块顶部编写
Option Explicit
,有助于减少此类错误


如果要获得数组的大小,请使用
LBound
UBound

这就是我解决问题的方法

name = Environ("username")
Dim found as Boolean
found = false
user1= Array("name.name1", "name.name2")
user2= Array("name1.name1", "name1.name2")

'to check for user2
For i = 0 To UBound(user1)
    If name = user1(i) Then
        MsgBox "User1"
        found = true
    End If
Next
'to check for user2
For i = 0 To UBound(user2)
    If name = user2(i) Then
        MsgBox "User2"
        found = true
    End If
Next

'Else if the username is not on the list, I have added a Boolean found.
if found = false then 
    MsgBox "Unidentified Access!"
end If

非常感谢您的指导

谢谢你给我一个主意。这真的让我很高兴:),但我现在的问题是,如果这两个数组中的任何一个都没有识别出来怎么办?我更希望看到I=LBound(user1)到UBound(user1)
。这样,就不会对数组的基进行硬编码。