2015-03-25 113 views
1

我有这个循环代码在我的Userform做循环不循环

Private Sub cmdLogin_Click() 
Dim user, pass As String 
Dim x As Integer 

user = Me.user1.Text 
pass = Me.pass1.Text 

x = 2 
Do While ActiveWorkbook.Worksheets("Sheet1").Cells(x, 1).Value <> "" 
    If ActiveWorkbook.Worksheets("Sheet1").Cells(x, 1).Value = user _ 
    And ActiveWorkbook.Worksheets("Sheet1").Cells(x, 2).Value = pass Then 
     MsgBox "YES" 
     Exit Do 
    Else 
     MsgBox "NO" 
     Exit Do 
    End If 
Loop 
End Sub 

但它好像代码不会循环遍历单元格,只会停止,直到x = 2或单元格(2,1)。此结果不能通过用户名和密码的整个列表和每个用户名和通行证我输入变得除了在第2行的错误。请帮助,因为我是新的VBA

+0

@PortlandRunner后它的答案,我会删除我的:) – L42 2015-03-25 03:50:58

+0

感谢@ L42我欣赏的报价 – 2015-03-25 03:52:43

+0

@PortlandRunner主席先生,我没有地方X = X + 1,但它仍然无法读取正确的用户名和密码。这次只有第3行正在确定。 – 2015-03-25 04:14:32

回答

4

如果Cells(2,1)不是""那么你有一个无限循环,因为你永远不会增加x

Loop之前加上:x = x + 1来增加你的循环。

我建议你玩一些these examples来了解VBA循环是如何工作的。

1

@PortlandRunner我找到了答案。感谢您的帮助。而不是放置X = X + 1就在接近循环我这样做

Do While ActiveWorkbook.Worksheets("Sheet1").Cells(x, 1).Value <> "" 

    If ActiveWorkbook.Worksheets("Sheet1").Cells(x, 1).Value = user And ActiveWorkbook.Worksheets("Sheet1").Cells(x, 2).Value = pass Then 
     MsgBox "YES" 
     Exit Do 
    Else 
     x = x + 1 
     If ActiveWorkbook.Worksheets("Sheet1").Cells(x, 1).Value = user And ActiveWorkbook.Worksheets("Sheet1").Cells(x, 2).Value = pass Then 
     MsgBox "YES" 
     Exit Do 
     Else 
     MsgBox "NO" 
     Exit Do 
     End If 
    End If 
loop 

非常感谢你给谁帮助:)

0

只是为了简化你自己的答案安杰洛的人,这里有一些提示:

With ActiveWorkbook.Worksheets("Sheet1") 
    If (.Cells(x, 1) = user And .Cells(x, 2) = pass) Or _ 
    (.Cells(x + 1, 1) = user And .Cells(x + 1, 2) = pass) Then 
     MsgBox "YES" 
     Exit Do 
    Else 
     MsgBox "NO" 
    End If 
End With