Página 1 de 1

Ajuda com FOR

Enviado: 02 Fev 2021 às 17:03
por Diego100ges
Pessoal, boa tarde!

Montei um código pra trazer alguns valores, por exemplo o código abaixo me traz 2 valores, e funciona perfeito, vai pra célula certinha, porém fica 1 embaixo do outro, eu queria que tivessem um intervalo de 7 linhas, por exemplo um irá para o A31 e o outro para o A38, como faço essa adptação?

Desde já muito obrigado!
Código: Selecionar todos
For p = 1 To lista_faturamento.ListItems.Count

    Pontos = lista_faturamento.ListItems.Item(p).SubItems(2)
    
    Range("A" & p + 30) = Pontos
    
Next

Re: Ajuda com FOR

Enviado: 02 Fev 2021 às 17:20
por osvaldomp
For p = 1 To lista_faturamento.ListItems.Count Step 7

Re: Ajuda com FOR

Enviado: 02 Fev 2021 às 17:23
por Diego100ges
@osvaldomp , boa tarde!
infelizmente quando eu coloco um step maior que 1, ele só registra o primeiro valor do listview, porém são 2 valores, no listview, e ele acaba registrando somente o primeiro que encontra.

Atenciosamente.

Re: Ajuda com FOR

Enviado: 02 Fev 2021 às 17:41
por osvaldomp
Acho que entendi. Desconsidere a sugestão anterior.
Veja se assim resolve.

Range("A" & 30 + 7 * (p - 1)) = Pontos

Re: Ajuda com FOR

Enviado: 03 Fev 2021 às 09:25
por Diego100ges
@osvaldomp , funcionou perfeitamente!, poderia me explicar o porque da multiplicação? não entendi muito bem.

Re: Ajuda com FOR

Enviado: 03 Fev 2021 às 10:26
por osvaldomp
O seu objetivo é colocar em A30 o primeiro valor da variável Pontos resultante do Loop e colocar os valores seguintes daquela variável 7 células abaixo, ou seja, em A37, A44, A51, ...

A expressão 7 * (p - 1) irá retornar os seguintes valores em função do valor de p ,que será incrementado pelo Loop (Step):

se p = 1 ~~~> 7 * (1-1) = 7*0 = 0 ~~~> célula destino A & 30 + 0 ~~~> A30

se p = 2 ~~~> 7 * (2-1) = 7*1=7 ~~~> célula destino A & 30 + 7 ~~~> A37

se p = 3 ~~~> 7 * (3-1) = 7*2=14 ~~~> célula destino A & 30 + 14 ~~~> A44