2015-03-25 3 views
1

J'ai ce code de boucle dans mon Userform.Ne boucle pas en boucle

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 

Mais il semble que le code ne boucle pas à travers les cellules et arrêts seulement jusqu'à x = 2 ou cellules (2,1). Il en résulte de ne pas pouvoir passer par la liste complète des noms d'utilisateur et mots de passe et chaque nom d'utilisateur et passe i entrer devient mauvais, sauf ceux à la ligne 2. S'il vous plaît aider comme je suis nouveau à VBA

+0

@PortlandRunner Poster comme réponse, je vais supprimer le mien :) – L42

+0

Merci @ L42 j'apprécie l'offre –

+0

@PortlandRunner monsieur, je l'ai fait le lieu x = x + 1, mais il ne peux toujours pas lire le nom d'utilisateur et mot de passe. Cette fois, seule la ligne 3 est en cours de détermination. –

Répondre

4

Si Cells(2,1) n'est pas "" vous avoir une boucle infinie parce que vous n'augmentez jamais x.

Juste avant Loop ajoutez ceci: x = x + 1 pour incrémenter votre boucle.

Je vous suggère de jouer avec certains de these examples pour avoir une idée du fonctionnement des boucles VBA.

1

@PortlandRunner J'ai trouvé la réponse. merci d'avoir aidé. au lieu de placer x = x + 1 juste avant la boucle Je l'ai fait

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 

merci beaucoup aux personnes qui ont aidé :)

0

Juste pour simplifier votre propre réponse Angelo, voici quelques conseils:

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