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.
  • Avatar do usuário
  • Avatar do usuário
#35362
Amigos,
Vocês são incríveis, tem me ajudado muito.
Gostaria de contar mais um vez com esse apoio para solucionar o seguinte problema através do vba:

UMA COLUNA PREENCHIDA COM VÁRIAS LINHAS VAZIAS E OUTRAS PREENCHIDAS. PRECISAMOS DE UM CÓDIGO QUE PREENCHA AS LINHAS VAZIAS SEGUINDO AS SEGUINTES REGRAS:

SE A LINHA FOR DIFERENTE DE VAZIO, PASSA PARA A PRÓXIMA.
SE A LINHA FOR IGUAL A VAZIO: COPIAR O CONTEUDO DA CELULA ANTERIOR E COLAR NESTA.
CASO O CÓDIGO ENCONTRE 5 LINHAS SEGUIDAS COM VALOR IGUAL A VAZIO ELE DEVE PARA DE EXECUTAR.

IMPORTANTE: o código deve começar a trabalhar a partir da linha 2, ou seja, vai desprezar a linha 1, exceto na hora de copiar o conteúdo.

EXEMPLO: Se na linha 1 tem conteudo diferente de vazio, no caso tem a palavra "JOSE", o código vai entender que deve passar para a próxima linha.
Na próxima linha (linha 2) ele deve analisar o conteúdo e se for igual a vazio, o código vai copiar o conteúdo da linha acima (linha 1) e colar como somente valores nessa linha (linha 2).


EXEMPLO:

LINHAS

1 JOSE
2
3
4 MARIA
5
6 JOAO
7
8
#35363
Como vc não postou uma planilha modelo, fiz um código que se orienta pelos dados da coluna "A" e copia a linha inteira.
Veja se te atende:
Código: Selecionar todos
Sub main()
    Dim counter As Long
    Dim i As Long
    
    counter = 0
    
        For i = 2 To Planilha1.Cells(Rows.Count, 1).End(3).Row
        
            If Planilha1.Cells(i, 1) = "" Then
                
                Planilha1.Rows(i).Value = Planilha1.Rows(i - 1).Value
                counter = counter + 1
            Else
                counter = 0
            
            
            End If
        
        
        If counter = 5 Then Exit Sub
        
        Next i


End Sub
#35367
Seleciona o intervalo em branco, aperte F5, especial, em branco, depois aperte = a célula de cima preenchida e aperte CTRL + ENTER, ele irá preencher automaticamente as demais linhas.
#35372
Show. É isso mesmo, muito bom.
Esse código que precisamos, contudo gostaria que ele se aplicasse somente às linhas da coluna "A".
Ou seja, se a linha 1 da coluna "A", não é vazia ele pula, e analisa a linha 2 da coluna "A", que por sua vez está vazia, logo o código pega o que tem na linha 1 da coluna "A", copia, e cola na linha 2 da coluna "A" e assim sucessivamente.

Gostaria de agradecer e se não for abusar da boa vontade e paciência, haveria possibilidade de comentar as linhas de código de uma maneira que eu entenda o que cada termo significa.
Só se for possível e não for atrapalhar. É que estou aprendendo e isso ajuda muito quando você começa a entender o que os termos significam dentro da linguagem.
Não enviei a planilha devido o tamanho, mas vou tentar anexar novamente reduzindo a quantidade de dados.
#35374
Veja agora:
Código: Selecionar todos
Sub main()
    Dim counter As Long 'variável para controlar o limite de 5 células vazias por varredura
    Dim i As Long 'variável de loop
    
    counter = 0 'iniciando o contador
    
        For i = 2 To Planilha1.Cells(Rows.Count, 1).End(3).Row 'Definindo o limite do alcance _
         ou em outras palavras, definindo a última linha que contém dados
        
            If Planilha1.Cells(i, 1) = "" Then ' se a célula avaliada estiver vazia, então _
            o seu valor será igual ao da célula imediatamente acima:
                
                Planilha1.Cells(i, 1) = Planilha1.Cells(i - 1, 1)
                'e o contador será incrementado
                counter = counter + 1
            Else
                counter = 0 'se não for uma célula vazia, o contador será zerado
            
            
            End If
        
        
        If counter = 5 Then Exit Sub ' se o contador atingir o limite de 5 então sai da rotina
        
        Next i


End Sub
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