Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#57022
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.
#57033
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
#57047
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.
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord