Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por SandroLima
#66824
Boa tarde, pessoal.

Tenho uma macro para inserir linhas conforme o Nº de Procedimentos ou Parcelas (aquele que for maior).

Preciso de auxílio na seguinte necessidade:

No caso do exemplo da planilha anexa são 5 procedimentos e 3 parcelas, portanto ela insere 5 linhas e descreve cada linha da Coluna Proced como P1, P2, P3 etc.

Na Coluna Parcelas preciso que ela insira Parcela 1 de 3, Parcela 2 de 3 e Parcela 3 de 3.

Tentei com um Bloco "For... Next" dentro do outro mas sem sucesso.

Alguém poderia me orientar/ajudar em como proceder?

Na Planilha tem duas tabelas.

A Tabela 1 serve para verificação e teste da Macro e a Tabela 2 apresenta o resultado desejado.
Você não está autorizado a ver ou baixar esse anexo.
Por SandroLima
#66950
Boa noite, Jonathaluis.

Excelente alternativa.... obrigado pela ajuda.

No lugar desse trecho do seu código:
Código: Selecionar todos
If inserirParcelas And _
                    parc <= Parcelas Then
                    Tabela.ListColumns("Parcelas").DataBodyRange.Cells(1, 1).Value = "Parcela " & parc & _
                        " de " & Parcelas
                    parc = parc + 1
                End If
Consegui resolver da seguinte forma:
Código: Selecionar todos
If Parcelas >= P-1 Then
                            .ListColumns("Parcelas").DataBodyRange.Cells(1, 1).Value = "Parcela " & P-1 & " de " & Parcelas
                        Else
                            .ListColumns("Parcelas").DataBodyRange.Cells(1, 1).Value = ""
                        End If
Mais uma vez obrigado por agregar conhecimento.
Avatar do usuário
Por Jonathaluis
#66951
Boa!

Por questão de performance você não precisa do Else.
Quando você cria uma linha nova os seus campos estão todos vazios.
O código só vai inserir as parcelas quando entrar no if, do contrário não fará nada, então não precisa colocar o else com a linha que insere vazio(.ListColumns("Parcelas").DataBodyRange.Cells(1, 1).Value = "").
A mesma coisa para a linha Tabela.ListColumns("Descrição").DataBodyRange.Cells(1, 1).Value = "", quando cria uma linha nova já está vazia.
Só utilizaria celula= "" quando eu quisesse limpar o campo e nesse caso eles já são criados limpos.
SandroLima agradeceu por isso
extrair e ordenas nomes

Olá, @zami . opção1 - […]

Inserir espaço VBA

# Acrescente um espaço no final do texto […]

Olá, @GabrielFurtado . Fica fác[…]

Tabela repetindo valores

Boa tarde pessoal ! Alguém sabe se é[…]

Macro Copiar Formatação de Borda

Boa Tarde! Preciso de uma macro que possa estar co[…]

Olá pessoa, Boa Tarde... Tenho a seguinte d[…]

Boa tarde, estou com um problema, tenho uma planil[…]

Salve turma, Fiz uma planilha onde eu importo XML[…]