Notifications
Clear all
2024 - VBA & Macros
2
Posts
2
Usuários
0
Reactions
1,008
Visualizações
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
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