Notifications
Clear all

Loop sem Do

2 Posts
2 Usuários
0 Reactions
863 Visualizações
(@rutiel-baptista)
Posts: 0
New Member
Topic starter
 

Não consigo encontrar o erro de compilação "Loop sem Do", no penúltimo Loop, isto é, no meu segundo Do While. Alguém pode me ajudar?

Meu nível é básico/mediano no vba, não estou conseguindo ver o que está errado.

Sub Separador()

Application.ScreenUpdating = False

Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Dim EndX As String
Dim Status As String
Dim Mat As String
Dim Vol As Integer
Dim DesC As String
Dim Niv As String
EndX = ""
Status = ""
Mat = ""
Vol = 0
DesC = ""
Niv = ""
Set Ws1 = Sheets("Reposição")
Set Ws2 = Sheets("Base")


Ws1.Select
'---As referencia de linhas e colunas deve ser alterada após o teste
Ws1.Range("S6").Select
EndX = ActiveCell.Value
Mat = ActiveCell.Offset(0, 1).Value
Vol = ActiveCell.Offset(-0, -1).Value
DesC = Left(ActiveCell.Offset(0, 2), 8)
Niv = Mid(ActiveCell.Value, 8, 1)

Do While ActiveCell.Value <> ""

    Ws2.Select
    Ws2.Range("A2").Select
    
    Do While ActiveCell.Value <> ""
    
        If ActiveCell.Value = EndX Then
        Status = ActiveCell.Offset(0, 1).Value
            Do While Status = "Alto"
            Ws1.Select
            Ws1.Range("D200").End(xlUp).Offset(1, 0).Select
            ActiveCell.Value = EndX
            ActiveCell.Offset(0, -1).Value = DesC
            ActiveCell.Offset(0, -2).Value = Mat
            ActiveCell.Offset(0, 1).Value = Vol
            Loop
            Do While Status = "Baixo"
            Ws1.Select
            Ws1.Range("I200").End(xlUp).Offset(1, 0).Select
            ActiveCell.Value = EndX
            ActiveCell.Offset(0, -1).Value = DesC
            ActiveCell.Offset(0, -2).Value = Mat
            ActiveCell.Offset(0, 1).Value = Vol
            Loop
        Else
            If Niv = "A" Or Niv = "B" Then
            Ws1.Select
            Ws1.Range("I200").End(xlUp).Offset(1, 0).Select
            ActiveCell.Value = EndX
            ActiveCell.Offset(0, -1).Value = DesC
            ActiveCell.Offset(0, -2).Value = Mat
            ActiveCell.Offset(0, 1).Value = Vol
            Else
            Ws1.Select
            Ws1.Range("D200").End(xlUp).Offset(1, 0).Select
            ActiveCell.Value = EndX
            ActiveCell.Offset(0, -1).Value = DesC
            ActiveCell.Offset(0, -2).Value = Mat
            ActiveCell.Offset(0, 1).Value = Vol
            End If
    
    
    Loop
    
    Ws1.Select
    '--As referencia de linhas e colunas deve ser alterada após o teste
    Ws1.Range("S6").Select
    ActiveCell.Offset(1, 0).Select
    EndX = ActiveCell.Value
    Mat = ActiveCell.Offset(0, 1).Value
    Vol = ActiveCell.Offset(-0, -1).Value
    DesC = ActiveCell.Offset(0, 2).Value



Loop



Application.ScreenUpdating = True



End Sub

 
Postado : 22/10/2022 6:58 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Falta um End If, conforme em vermelho abaixo, que corresponde ao fechamento de If ActiveCell.Value = EndX Then

 

ActiveCell.Offset(0, 1).Value = Vol
End If

End If

Loop

Ws1.Select

 

dica - não utilize Select nos seus códigos; pesquise sobre os inconvenientes do uso desse método.

Osvaldo

 
Postado : 22/10/2022 7:58 pm