Página 1 de 1

Não executar passo caso não atenda condição

Enviado: 11 Jul 2020 às 11:34
por SandroLima
Bom dia, colegas

Tenho uma macro para a classificação de uma tabela que possui 6 passos nas regras de classificação.

No passo 6 tenho uma condição para que ele se realize.
Como ficaria a estrutura desse passo para que esse passo não seja executado caso ele não atenda a condição?

Segue a estrutura da macro:
Código: Selecionar todos
Tabela.Sort.SortFields.Clear
    
    For Passo = 1 To 6
    
    Set RngTabela = Nothing:   Set RngCol = Nothing
       
        If Passo = 1 Then   'Classifica os dados da tabela por data => mais antiga (início) para a mais recente (final da tabela)
            Set RngTabela = Range(Cells(inilin, IniCol), Cells(UltLin, UltCol))
            Set RngCol = Range(Cells(inilin, ColData), Cells(UltLin, ColData))
            SortTipo = xlSortOnValues: SortOrdem = xlAscending
        End If
        
        If Passo = 2 Then   'Insere um índice sequencial na coluna Registro e copia/cola os valores
           ....
           ....        
        
        If Passo = 6 Then
                Set RngTabela = Range(Cells(inilin, IniCol), Cells(lincorte, UltCol))
                Set RngCol = Range(Cells(inilin, ColVcto), Cells(lincorte, ColVcto))
                SortTipo = xlSortOnValues: SortOrdem = xlAscending
        End If
        ...
        ...
    
    Set Tabela = Nothing
    End Sub
A condição seria:
Código: Selecionar todos
If LinCorte > IniLin
Se a condição for atendida a macro executa o Passo 6 caso contrário ele continua a macro sem executar SOMENTE o Passo 6.

acho que seria algo perto disso mas não soube finalizar:
Código: Selecionar todos
If Passo = 6 Then
            If lincorte > inilin Then
                Set RngTabela = Range(Cells(inilin, IniCol), Cells(lincorte, UltCol))
                Set RngCol = Range(Cells(inilin, ColVcto), Cells(lincorte, ColVcto))
                SortTipo = xlSortOnValues: SortOrdem = xlAscending
            Else
                ...
            End if
        End If
Alguém poderia me orientar?

Desde já obrigado.

Re: Não executar passo caso não atenda condição

Enviado: 11 Jul 2020 às 15:43
por babdallas
Veja se é algo assim:
Código: Selecionar todos
'Código com outros IFs de cada passo

If Passo = 6  and lincorte > inilin Then
                Set RngTabela = Range(Cells(inilin, IniCol), Cells(lincorte, UltCol))
                Set RngCol = Range(Cells(inilin, ColVcto), Cells(lincorte, ColVcto))
                SortTipo = xlSortOnValues: SortOrdem = xlAscending
        End If

Re: Não executar passo caso não atenda condição

Enviado: 11 Jul 2020 às 17:53
por SandroLima
Boa tarde, babdallas

Obrigado pela ajuda novamente.

A macro veio a apresentar um erro agora... mas acredito que não esteja relacionado à sua implementação no código:
Código: Selecionar todos
If Passo = 6  and lincorte > inilin Then
Pois, como pode ver na macro, implementei ela no passo 5 e coloquei para executar até o passo 5 e a macro funcionou normalmente.
Coloquei ela no Passo 6 e a macro apresentou um erro:
Imagem

Mas deve ser algo relacionado a esse passo da macro e não à sua implementação já que ela no Passo 5 funcionou... poderia confirmar isso?
Envio a planilha para verificação.

Re: Não executar passo caso não atenda condição

Enviado: 13 Jul 2020 às 00:26
por SandroLima
Encontrei meu erro.

Muito obrigado pela grande ajuda, babdallas.

Sua implementação na Macro atendeu prontamente.