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.
Por IvoNogueira
Posts
#33155
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!
Por osvaldomp
#33160
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
Por babdallas
#33181
Faça o que o Osvaldo disse que de fato resolve. Para deletar linhas acredito ser a melhor prática.
#33198
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!
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