Notifications
Clear all

Do while ou For next?

2 Posts
1 Usuários
0 Reactions
811 Visualizações
(@jeffergar)
Posts: 15
Eminent Member
Topic starter
 

Olá a todos!

Tenho uma macro para uma ação bem simples que funciona perfeitamente conforme o código que segue.

Neste caso, eu tenho uma planilha que me apresenta o resultado por colocação, na qual posso pesquisar de 15 em 15 colocados.

A macro serve para que o operador diga qual a 1ª posição + 14 que ele deseja consutar. Para tanto abre um formulário na qual ele digita o número, e automaticamente a macro salva aquele número na célula ativa, salta de 12 em 12 células somando o número digitado até dar 15 posições.

Porém, precisei criar um camando para salvar linha a linha como podem ver aqui:

Private Sub CmB_atual_Click()

Sheets("Apuração").Select
Range("a4").Select
Application.Calculation = xlManual

Dim posicao As Integer
posicao = TxtB_posicao ' aqui tenho a variável com a primeira colocação que o operador deseja pesquisar
ActiveCell.Value = posicao
Range("a16").Value = posicao + 1 'queria não precisar de informar linha a linha e somar posicao
Range("a28").Value = posicao + 2
Range("a40").Value = posicao + 3
Range("a52").Value = posicao + 4
Range("a64").Value = posicao + 5
Range("a76").Value = posicao + 6
Range("a88").Value = posicao + 7
Range("a100").Value = posicao + 8
Range("a112").Value = posicao + 9
Range("a124").Value = posicao + 10
Range("a136").Value = posicao + 11
Range("a148").Value = posicao + 12
Range("a160").Value = posicao + 13
Range("a172").Value = posicao + 14

form_atual.Hide

Application.Calculation = xlAutomatic

End Sub

Tentei no lugar esta outra opção mas não consigo prosseguir:

Sub atualizar()
'form_atual.Show


Sheets("Apuração").Select
Range("a4").Select
Application.Calculation = xlManual

Dim linhas(0 To 14) As Integer
Dim novaposicao, i As Integer
Dim l As Integer

novaposicao = InputBox("Insira a primeira dezena da sequência de 15 clientes que deseja consultar", "Atualização")

ActiveCell.Value = novaposicao

Do While ActiveCell.Value <= novaposicao + 14
    ActiveCell.Offset(12, 0) = novaposicao + 1
Loop

Application.Calculation = xlAutomatic
End Sub

Alguém poderia me ajudar?
Obrigado!
Jefferson

 
Postado : 17/01/2012 11:17 am
(@jeffergar)
Posts: 15
Eminent Member
Topic starter
 

Galera!
Já consegui!

Segue o código caso alguém tenha a mesma dúvida posteriormente:

Sub atualizar()
'form_atual.Show


Sheets("Apuração").Select
Range("a4").Select
Application.Calculation = xlManual

Dim novaposicao, contador As Integer

novaposicao = InputBox("Insira a primeira dezena da sequência de 15 clientes que deseja consultar", "Atualização")

ActiveCell.Value = novaposicao
contador = novaposicao

Do While contador <> novaposicao + 14
    contador = contador + 1
    ActiveCell.Offset(12, 0).Select
    ActiveCell.Value = contador
'    MsgBox (contador)
Loop
Range("a4").Select

Application.Calculation = xlAutomatic
End Sub
 
Postado : 17/01/2012 1:06 pm