Notifications
Clear all

Unindo Range e Selection.End

3 Posts
2 Usuários
0 Reactions
1,084 Visualizações
(@wil-iam)
Posts: 8
Active Member
Topic starter
 

Boa tarde Amigos,

Para "Burlar" um possível erro caso não tenha o código que quero selecionar (.find) e deletar (.ClearContent) eu usei o On Error Resume Next.

Porém Quando ele identifica o erro no código "'Erro 1" o VBA executa o "Erro 2"

Para qua isso não aconteça preciso unir em um único código o "Erro 1" e "Erro 2"

Segue abaixo o código e uma planilha de exemplo em anexo.

Sub Desenvolvendo()

Dim EX1a As String
Dim EX1b As String
Dim EX2a As String
Dim EX2b As String
Dim EX3a As String
Dim EX3b As String
Dim EX4a As String
Dim EX4b As String
Dim EX5a As String
Dim EX5b As String


 
EX1a = Sheets("Plan1").Range("J5"): EX1b = Sheets("Plan1").Range("J6")
EX2a = Sheets("Plan1").Range("J7"): EX2b = Sheets("Plan1").Range("J8")
EX3a = Sheets("Plan1").Range("J9"): EX3b = Sheets("Plan1").Range("J10")
EX4a = Sheets("Plan1").Range("J11"): EX4b = Sheets("Plan1").Range("J12")
EX5a = Sheets("Plan1").Range("J13"): EX5b = Sheets("Plan1").Range("J14")

k = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row

On Error Resume Next
  Range("A5:A" & k).Find(What:=EX1a).Select
  Range(Selection, Selection.End(xlToRight)).ClearContents

  'Erro 1
  Range("M5:M" & k).Find(What:=EX1b).Select
  'Erro 2  
  Range(Selection, Selection.End(xlToRight)).ClearContents
  End Sub
 
Postado : 14/08/2017 12:03 pm
(@alminen)
Posts: 77
Trusted Member
 

Não sei se entendi muito bem o objetivo, mas o tratamento de erros do código simplesmente não tá existindo. O código simplesmente continua a executar tudo aquilo que foi colocado depois do 'Erro 1' e do 'Erro 2'. Caso você queira que o código passe por cada um dos erros, sugiro o seguinte:

Sub Desenvolvendo()

Dim EX1a As String
Dim EX1b As String
Dim EX2a As String
Dim EX2b As String
Dim EX3a As String
Dim EX3b As String
Dim EX4a As String
Dim EX4b As String
Dim EX5a As String
Dim EX5b As String



EX1a = Sheets("Plan1").Range("J5"): EX1b = Sheets("Plan1").Range("J6")
EX2a = Sheets("Plan1").Range("J7"): EX2b = Sheets("Plan1").Range("J8")
EX3a = Sheets("Plan1").Range("J9"): EX3b = Sheets("Plan1").Range("J10")
EX4a = Sheets("Plan1").Range("J11"): EX4b = Sheets("Plan1").Range("J12")
EX5a = Sheets("Plan1").Range("J13"): EX85b = Sheets("Plan1").Range("J14")

k = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row

On Error GoTo Erro1
  Range("A5:A" & k).Find(What:=EX1a).Select
  Range(Selection, Selection.End(xlToRight)).ClearContents
Exit Sub

Erro1:
  On Error GoTo Erro2
  Range("M5:M" & k).Find(What:=EX1b).Select
  Exit Sub
Erro2:  
  Range(Selection, Selection.End(xlToRight)).ClearContents
  Exit Sub

End Sub

Caso você queira unificar os dois handlers, basta remover as linhas "On Error GoTo Erro2", "Erro2:" e a última "Exit Sub".

Não sei se serviu para clarear, mas confesso que não entendi bem onde você quer chegar. A discussão tá aberta!

Boa sorte!

 
Postado : 14/08/2017 7:21 pm
(@wil-iam)
Posts: 8
Active Member
Topic starter
 

Deu certo, mesmo vocês não entendendo ao certo.

Muito obrigado!

 
Postado : 15/08/2017 8:03 am