2015-03-25 5 views
1

У меня есть этот код цикла в моем Userform.Do Loop not looping

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 

Но, похоже, код не цикл через клетку и останавливается только до й = 2 или клетки (2,1). Это приводит не в состоянии пройти через весь список имен пользователей и пароли, и каждое имя пользователя и пропуск я войти становится неверным, за исключением тех, в строке 2. Пожалуйста, помогите, как я новичок в VBA

+0

@PortlandRunner сообщение это как ответ, я буду удалять мое :) – L42

+0

Спасибо @ L42 Я ценю предложение –

+0

@PortlandRunner сэр, я сделал место х = х + 1, но она до сих пор не могу прочитать правильное имя пользователя и пароль. На этот раз определяется только строка 3. –

ответ

4

Если Cells(2,1) не "" то имеют бесконечный цикл, потому что вы никогда не увеличиваете x.

Незадолго до Loop добавьте это: x = x + 1, чтобы увеличить ваш цикл.

Предлагаю вам играть с некоторыми из these examples, чтобы получить представление о том, как работают петли VBA.

1

@PortlandRunner Я нашел ответ. спасибо за помощь. вместо размещения х = х +-перед циклом я сделал это

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