Jump to content
Fórum Script Brasil
  • 0

Problemas Usando For e Next


ElvisNoleto

Question

Boa tarde!

Pessoal desculpe se as minhas perguntas forem bobas. Vou tentar ser o mais claro possível.

seguinte...

Criei um código VBA no excel para comparar duas abas de uma planilha e copiar valores caso as minhas condições sejam verdadeiras, (vou dar exemplo)

eu consegui criar o código e ele funciona perfeitamente só que o problema é que se eu usar o código mais de 4 vezes o meu Pc entra em colapso (Intel Core i7 4ghz, 8gb de memória com placa de vídeo 2gb) se alguém souber alguma forma de otimizar o código para evitar travamento eu agradecerei infinitamente.

Ex Planilha:

Na planilha aba A temos na linha 1 o número 10 seguindo a linha temos uma série de dados como sala de aula e outros.

Na aba B temos nomes que quero atribuir as linhas da aba A. os nomes dos alunos são Numerados tendo lá alguns alunos com o número 1 o mesmo que tem

na aba A. Então a idéia da macro é atribuir automaticamente o nome do aluno á sala com número correpondente e caso tenha mais de um aluno com o mesmo número então serão divididos igualmente pelas salas. tá chega de baboseira vamos ao código.

Sub Copiar()

Sheets("Alunos").Select

Range("G2").Select

ActiveCell.FormulaR1C1 = "=COUNTA('Salas'!C2)" 'Conta os valores para o for não ser excessivamente grande

Calculate

a = Range("G2").Value

Contador = 2

For X = 1 To a

Sheets("Salas").Select

If Sheets("Salas").Cells(X, 9) = "1" Then

If Sheets("Salas").Cells(Contador, 1) = "" Then

Contador = 2

Else

Contador = Contador + 1 'FAZ UM LOOP CASO OS ALUNOS ACABEM

End If

If Sheets("Alunos").Cells(Contador, 3) = "1" Then

Sheets("Salas").Cells(X, 1) = Sheets("Alunos").Cells(Contador, 1)

Else

X = X - 1 'Evita que pule linhas

End If

End If

Next X ' Recomeça o valor do For

End Sub

Assim funciona só que se eu for usar mais critérios para separar pra mais salas tipo refazer para contar e separar também para o número "2".

O computador trava, eu sinceramente não sei se tem um bug na minha fórmula ou se tem outro jeito de usá-lo pra otimizar processamento.

Agradeço pela atenção.

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...