Notifications
Clear all

Excluindo dados através de um Imput Box

3 Posts
2 Usuários
0 Reactions
913 Visualizações
(@jricardoq)
Posts: 2
New Member
Topic starter
 

Pessoal, boa tarde! Sou novo no fórum, já procurei muito, mas não encontrei solução para meu problema. Preciso apagar linhas de uma planilha, onde alguns dados se repetem (Nº do Pedido, p. ex.). Ocorre que eu gostaria de exibir uma mensagem caso o Nº não seja encontrado, e outra quando os Nºs fossem excluídos.
Alguém pode me ajudar? Segue o código que escrevi. Grato.

Sub Botão4_Clique()
    Dim EncontraString As String
    Dim Rng As Range
    Dim i As Integer
    Dim n As Integer
    n = 15
    i = 1
   
    EncontraString = InputBox("Qual o pedido que você quer cancelar?", "CANCELAR PEDIDO", "", 12000, 5000)
        If Trim(EncontraString) <> "" Then
            With Sheets("CadPedido").Range("B:B")
            On Error GoTo TratarErro
                Do While i <= n
                Set Rng = .Find(What:=EncontraString, _
                                  After:=.Cells(.Cells.Count), _
                                  LookIn:=xlValues, _
                                  LookAt:=xlWhole, _
                                 SearchOrder:=xlByRows, _
                                 SearchDirection:=xlNext, _
                                 MatchCase:=False)
                        
                If Not Rng Is Nothing Then
                Application.Goto Rng, True
                Application.ScreenUpdating = False
                Selection.EntireRow.ClearContents
           
        End If
        i = i + 1
        Loop

TratarErro:
            MsgBox "Pedido Não Encontrado."
            Exit Do
        Application.ScreenUpdating = False
        Range("B15:H20000").Select
    ActiveWorkbook.Worksheets("CadPedido").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("CadPedido").Sort.SortFields.Add Key:=Range( _
        "B15:B20000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("CadPedido").Sort.SortFields.Add Key:=Range( _
        "C15:C20000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("CadPedido").Sort
        .SetRange Range("A15:H20000")
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    
    End With
    ActiveWorkbook.RefreshAll
    Application.ScreenUpdating = True
    Range("B1048576").End(xlUp).Offset(1, 0).Select
    MsgBox "O Pedido " & EncontraString & " foi cancelado."

End With
End If
   
End Sub
 
Postado : 30/04/2016 9:51 am
(@adgere)
Posts: 76
Trusted Member
 

Tente assim:

    Dim EncontraString As String
    Dim Rng As Range
    Dim i As Integer
    Dim n As Integer
    Dim v As Integer
    n = 15
    i = 1
   
    EncontraString = InputBox("Qual o pedido que você quer cancelar?", "CANCELAR PEDIDO", "", 12000, 5000)
        If Trim(EncontraString) <> "" Then
            With Sheets("CadPedido").Range("B:B")
            On Error GoTo TratarErro
                Do While i <= n
                Set Rng = .Find(What:=EncontraString, _
                                  After:=.Cells(.Cells.Count), _
                                  LookIn:=xlValues, _
                                  LookAt:=xlWhole, _
                                 SearchOrder:=xlByRows, _
                                 SearchDirection:=xlNext, _
                                 MatchCase:=False)
                        
                If Not Rng Is Nothing Then
                   Application.Goto Rng, True
                   Application.ScreenUpdating = False
                   Selection.EntireRow.ClearContents
                   v = v + 1
                End If
        i = i + 1
        Loop

TratarErro:
            
       If v = 0 Then
          MsgBox "Pedido Não Encontrado."
       Else
          MsgBox "O Pedido " & EncontraString & " foi cancelado." & Chr(13) & Chr(13) & _
                 "Total de registros encontrados: " & v
       End If
            
        Application.ScreenUpdating = False
        Range("B15:H20000").Select
    ActiveWorkbook.Worksheets("CadPedido").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("CadPedido").Sort.SortFields.Add Key:=Range( _
        "B15:B20000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("CadPedido").Sort.SortFields.Add Key:=Range( _
        "C15:C20000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("CadPedido").Sort
        .SetRange Range("A15:H20000")
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    
    End With
    ActiveWorkbook.RefreshAll
    Application.ScreenUpdating = True
    Range("B1048576").End(xlUp).Offset(1, 0).Select

End With
End If
 
Postado : 30/04/2016 6:22 pm
(@jricardoq)
Posts: 2
New Member
Topic starter
 

Caro(a) adGere, ficou melhor do que esperava. Muto obrigado!!!

 
Postado : 01/05/2016 5:46 pm