Página 1 de 1

Loops inconscitene p/ apagar Range.

Enviado: 19 Mai 2018 às 10:43
por IvoNogueira
Olá a todos! :D

Estou desenvolvendo um upgrade para um projecto que uso já há bastante tempo! Para facilitara a utilização do arquivo implementei uma nova funcionaidade atravez de loop, no entanto este apresennta uma inconsitencia, no entanto criei uma alternativa menos amigavel em questão de oraganização.


Em termos práticos sem estar a detalhar muito, é suposto que o loop apague um Range dentro de uma base de dados, se a data no primeiro campo for igual a data defenida.
Código: Selecionar todos
Dim msgresponse As Integer

msgresponse = MsgBox("Existe um registo de revenda efectuado hoje. Esta ação ira eliminar o registo anterior, deseja continuar", vbYesNo + vbCritical)
Select Case msgresponse
    Case vbYes
        DELL = Folha103.Cells(Folha103.Rows.Count, "A").End(xlUp).Row
        
        For DELR = 2 To DELL
        Folha103.Select
            If Cells(DELR, 1).Value = Range("DATA_REGISTO").Value Then
            Range("A" & DELR & ":" & "K" & DELR).Delete
            
            End If
        Next DELR
        
    Case vbNo
    
End Select

End If
O que acontece basicamente é que ao apagar o conteudo deste range, o loop salta uma possição o que faz com que alguns dos registos que deviam ser apagados fiquem na base de dados.

Para já alterei pra
Código: Selecionar todos
 Range("A" & DELR & ":" & "K" & DELR).ClearContents
, no entanto ficam os espaçõs vazio!
Sei tambem que se apaga-se toda a linha isto não acontecia, no entanto não o posso fazer pois tenhos outras informações paralelas que não podem ser apagadas.

Estou certo que haverá algum procidimento que possa corrigir este problema, desde já agradeço a ajuda que vier!

Re: Loops inconscitene p/ apagar Range.

Enviado: 19 Mai 2018 às 14:23
por osvaldomp
Experimente aplicar o Loop de baixo para cima na planilha.
em lugar de ~~~> For DELR = 2 To DELL
coloque ~~~~~~> For DELR = DELL To 2 Step -1

Re: Loops inconscitene p/ apagar Range.

Enviado: 19 Mai 2018 às 23:46
por babdallas
Faça o que o Osvaldo disse que de fato resolve. Para deletar linhas acredito ser a melhor prática.

Re: Loops inconscitene p/ apagar Range.

Enviado: 21 Mai 2018 às 06:32
por IvoNogueira
Ai Oslvaldo, me desculpa pela demora estive fora não tive oportunidade de responder antes. Entretanto testei agora a pouco " work Like a Charm"!
Não tinha ainda pensado nessa possibilidade, muito obrigado pela ajuda!
Mas ainda assim correu mal da primeira vez :shock: .. pois por defenição o Excel nesta situação arrasta as celulas da direita para a esquerda quando apaga um range!

:lol: :lol: :lol: :lol: !! Destrui a base de dados!!! :lol: :lol: :lol: :lol:

Por sorte e como sempre estava a usar uma copia do original e foi só acrescentear o xlUp depois do delete e TXaram....! Está aplicada a fução que prevê a duplicação de dados ! 8-)

Espero ser eu a ajudar num futuro próximo!
Muito Obrigado!