none
Ajuda para criação de um "FOR / NEXT"

    Question

  • Pessoal, preciso de um suporte com brevidade!!!!

    Tenho uma macro (vide código abaixo) que para atender minhas necessidades preciso aprender a criar um For/Next (acho que será a melhor solução).

    O objetivo da macro é preencher uma tabela matriz, assim necessito que:
        a) Range ("B10") varie da linha 10 a 65 mantendo a coluna B;
        b) Range ("B10") varie da linha 10 a 65 mantendo a coluna B;
        c) Range ("E9") varie de colunas de E a U mantendo a linha 9; e
        d) Range ("e10") varie da linha 10 a 65 e também das colunas de E a U.


    Código:

    Sub Tabela()

    Dim wkOrigemDestino  As Worksheet
    Dim wkDestinoOrigem  As Worksheet

    Set wkOrigemDestino = Sheets("LISTA_PR_MIN_ALE")
    Set wkDestinoOrigem = Sheets("CALC_PR_VENDA")
           
            With wkOrigemDestino
                .Range("b10").Copy wkDestinoOrigem.Range("c5")
                .Range("d10").Copy wkDestinoOrigem.Range("c7")
                .Range("e9").Copy wkDestinoOrigem.Range("c4")
            With wkDestinoOrigem
                .Range("d20").Copy
                wkOrigemDestino.Range("e10").Select
                Selection.PasteSpecial Paste:=xlPasteValues
            End With
            End With
     
    End Sub


    No aguardo de suporte,

    Desde já agradeço,

    Grande abraço,

    Marco.Andrade

    Tuesday, October 06, 2009 10:16 PM

Answers

  • Olá....Baixei a planilha....

    É só executar essa rotina que dará certo..

    Sub GeraTabela()
        Dim wkOrigemDestino  As Worksheet
        Dim wkDestinoOrigem  As Worksheet

        Set wkOrigemDestino = Sheets("LISTA_PR_MIN_ALE")
        Set wkDestinoOrigem = Sheets("CALC_PR_VENDA")

        Application.Cursor = xlWait
        Dim L As Integer, C As Integer
        For L = 10 To 65
            For C = Columns("E").Column To Columns("U").Column
                 With wkOrigemDestino
                    wkDestinoOrigem.Range("c5") = .Range("b" & L)
                    wkDestinoOrigem.Range("c7") = .Range("d" & L)
                    wkDestinoOrigem.Range("c4") = .Cells(9, C)
                End With
                wkOrigemDestino.Cells(L, C) = wkDestinoOrigem.Range("d20")
            Next
        Next
        Application.Cursor = xlDefault
    End Sub

    Por nada..
    Até...Não se esqueça de marcar como resposta...
    Abs.

    • Marked as answer by MarkoAndrade Monday, October 12, 2009 12:26 AM
    Friday, October 09, 2009 1:15 PM
  • Muiiiiiiiiito obrigado!!!!
    Ficou perfeita e sem dúvida muito melhor que a solução que eu havia proposto!!!!!
    Grande abraço,
    • Marked as answer by MarkoAndrade Monday, October 12, 2009 12:27 AM
    Monday, October 12, 2009 12:27 AM

All replies

  • Olá...

        Dim L As Integer, C As Integer
        For L = 10 To 65
            Range("B" & L) = "ALGUM VALOR"
        Next

        For C = Columns("E").Column To Columns("U").Column
            Cells(9, C) = "ALGUM VALOR"
        Next

        For L = 10 To 65
            For C = Columns("E").Column To Columns("U").Column
                Cells(L, C) = "ALGUM VALOR"
            Next
        Next

    Se solucionar marque como resposta..
    Qualquer dúvida post denovo..
    Até..

    Wednesday, October 07, 2009 11:54 AM
  • Cara, realmente sou leigo no assunto....necessito de mais ajuda!

    Testei separadamente seu código e esta ok, mas não consegui incluí-lo no meu código que já possui as demais ações.

    No aguardo de retorno,

    Grato,
    Wednesday, October 07, 2009 1:44 PM
  • Olá....
    Eu preciso que você me explique melhor o seu objetivo ou mande a planilha no meu email(EMAIL REMOVED)
    Até..
    Wednesday, October 07, 2009 7:43 PM
  • Olá!!!
    Então, até gostaria de lhe enviar a planilha mas o site pelo visto não permite....

    Bom, tentarei novamente me explicar, veja abaixo o código que utilizo hoje, note que ele é praticamente igual, muda apenas a posição de colagem dos dados coletados noutra planilha. Tenho por certo que este metodo, apesar de dar certo é "burro" pois a cada nova linha ou coluna preciso replicar o código, e como a planilha já esta com muitas linhas o trabalho é quase desumano, e creio que um loop, while, for/next (ou outro) resolveria, mas não sei como faze-lo.

    Copio abaixo o código que tenho hoje para sua análise.


    MUITO OBRIGADO PELA ATENÇÃO!!!!!


    ' as mudanças acontecem por linha (range B10 a B65, D10 a D65) e E10 a E65 e coluna F/G/H até U, conforme o produto
      ' e por produto, quando termina de preencher o produto1 da coluna E9 a linha E65, muda o código de E9 para F9 produto2 e assim consecutivamente)
    ' abaixo as mudanças de apenas 03 linhas e 02 colunas, sendo que teria que replicar este código para até 65 linhas e até 17 colunas


    Sub Tabela1()

    Dim wkOrigemDestino  As Worksheet
    Dim wkDestinoOrigem  As Worksheet

    Set wkOrigemDestino = Sheets("LISTA_PR_MIN_ALE")
    Set wkDestinoOrigem = Sheets("CALC_PR_VENDA")
      
      
      'preenchimento posição  E10
            With wkOrigemDestino
                .Range("b10").Copy wkDestinoOrigem.Range("c5")
                .Range("d10").Copy wkDestinoOrigem.Range("c7")
                .Range("e9").Copy wkDestinoOrigem.Range("c4")
            With wkDestinoOrigem
                .Range("d20").Copy
                wkOrigemDestino.Range("e10").Select
                Selection.PasteSpecial Paste:=xlPasteValues
            End With
            End With
     
      'preenchimento posiçao E11
            With wkOrigemDestino
                .Range("b11").Copy wkDestinoOrigem.Range("c5")
                .Range("d11").Copy wkDestinoOrigem.Range("c7")
                .Range("e9").Copy wkDestinoOrigem.Range("c4")
            With wkDestinoOrigem
                .Range("d20").Copy
                wkOrigemDestino.Range("e11").Select
                Selection.PasteSpecial Paste:=xlPasteValues
            End With
            End With
     
     'preenchimento posição E12
            With wkOrigemDestino
                .Range("b12").Copy wkDestinoOrigem.Range("c5")
                .Range("d12").Copy wkDestinoOrigem.Range("c7")
                .Range("e9").Copy wkDestinoOrigem.Range("c4")
            With wkDestinoOrigem
                .Range("d20").Copy
                wkOrigemDestino.Range("e12").Select
                Selection.PasteSpecial Paste:=xlPasteValues
            End With
            End With

     'preenchimento posição F10
            With wkOrigemDestino
                .Range("b10").Copy wkDestinoOrigem.Range("c5")
                .Range("d10").Copy wkDestinoOrigem.Range("c7")
                .Range("f9").Copy wkDestinoOrigem.Range("c4")
            With wkDestinoOrigem
                .Range("d20").Copy
                wkOrigemDestino.Range("f10").Select
                Selection.PasteSpecial Paste:=xlPasteValues
            End With
            End With
     
     'preenchimento posiçao F11
            With wkOrigemDestino
                .Range("b11").Copy wkDestinoOrigem.Range("c5")
                .Range("d11").Copy wkDestinoOrigem.Range("c7")
                .Range("f9").Copy wkDestinoOrigem.Range("c4")
            With wkDestinoOrigem
                .Range("d20").Copy
                wkOrigemDestino.Range("f11").Select
                Selection.PasteSpecial Paste:=xlPasteValues
            End With
            End With
     
    'preenchimento posição F12
            With wkOrigemDestino
                .Range("b12").Copy wkDestinoOrigem.Range("c5")
                .Range("d12").Copy wkDestinoOrigem.Range("c7")
                .Range("f9").Copy wkDestinoOrigem.Range("c4")
            With wkDestinoOrigem
                .Range("d20").Copy
                wkOrigemDestino.Range("f12").Select
                Selection.PasteSpecial Paste:=xlPasteValues
            End With
            End With

    End Sub

    Thursday, October 08, 2009 2:26 AM
  • Cara,

    Tente acessar a planilha por: http://rapidshare.com/files/290095486/Tabela160909teste.xls.html

    Mais uma vez....OBRIGADO pela colaboração!!!!

    Thursday, October 08, 2009 2:46 AM
  • Cara,

    Tente acessar a planilha por: http://rapidshare.com/files/290095486/Tabela160909teste.xls.html

    Mais uma vez....OBRIGADO pela colaboração!!!!


    Detalhe importante!!!!

    Na planilha, o botão "Gerar Tabela 1" é meu código citado anteriormente, que é o que eu gostaria fazer usando um loop para preenchimento completo da tabela. E o botão "Gerar Tabela" é o seu código.

    Abs,
    Thursday, October 08, 2009 3:01 AM
  • Olá....Baixei a planilha....

    É só executar essa rotina que dará certo..

    Sub GeraTabela()
        Dim wkOrigemDestino  As Worksheet
        Dim wkDestinoOrigem  As Worksheet

        Set wkOrigemDestino = Sheets("LISTA_PR_MIN_ALE")
        Set wkDestinoOrigem = Sheets("CALC_PR_VENDA")

        Application.Cursor = xlWait
        Dim L As Integer, C As Integer
        For L = 10 To 65
            For C = Columns("E").Column To Columns("U").Column
                 With wkOrigemDestino
                    wkDestinoOrigem.Range("c5") = .Range("b" & L)
                    wkDestinoOrigem.Range("c7") = .Range("d" & L)
                    wkDestinoOrigem.Range("c4") = .Cells(9, C)
                End With
                wkOrigemDestino.Cells(L, C) = wkDestinoOrigem.Range("d20")
            Next
        Next
        Application.Cursor = xlDefault
    End Sub

    Por nada..
    Até...Não se esqueça de marcar como resposta...
    Abs.

    • Marked as answer by MarkoAndrade Monday, October 12, 2009 12:26 AM
    Friday, October 09, 2009 1:15 PM
  • Muiiiiiiiiito obrigado!!!!
    Ficou perfeita e sem dúvida muito melhor que a solução que eu havia proposto!!!!!
    Grande abraço,
    • Marked as answer by MarkoAndrade Monday, October 12, 2009 12:27 AM
    Monday, October 12, 2009 12:27 AM