none
Salvar ListBox em mais de 1 Plan RRS feed

  • Pergunta

  • Boa tarde!
    Tenho o código abaixo e gostaria que a Macro salve em 2 "Abas" os mesmos Dados.
    O código que está funcionando já está salvando nas colunas corretas, mas provavelmente vou precisar redefinir a segunda assim que conseguir enviar os dados pra lá.

    Minha dúvida é a seguinte:

    Como posso inserir mais uma Plan nesse código.

    Como defino em quais colunas dessa nova planilha os dados serão salvos?

    PreenchePedidos:
    With Sheets("Banco_Dados")   'seleciona a planilha e insere os dados
    nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 1).Row
    End With
    With Me.Lista_Produtos
            
               
           
           For lCount = 0 To .ColumnCount
                   Sheets("Banco_Dados").Cells(nextRow, oCol) = .List(lista, lCount)
                   oCol = oCol + 1
    
        Next
    
            If .ListCount - 1 > lista Then
                oCol = 1
                lista = lista + 1
                GoTo PreenchePedidos
                
             Else
            Lista_Produtos.Clear
            Unload Me
             Exit Sub
             
            End If
    
        End With
    

    segunda-feira, 19 de março de 2018 18:46

Respostas

  • Neste caso, com colunas alternadas, é melhor alterar a forma dinâmica de inserir os dados, eliminando o laço for j .

    Exemplo

    Dim i As Integer Dim nextRow As Integer Dim nextRow_1 As Integer Dim ws1 As Worksheet Dim ws2 As Worksheet With ThisWorkbook Set ws1 = .Sheets("Banco_Dados") ' plan1 Set ws2 = .Sheets("SUA_OUTRA_PLAN") ' plan2 End With With Me.Lista_Produtos For i = 0 To .ListCount - 1 nextRow = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Offset(1).Row nextRow_1 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Offset(1).Row ' plan1 ws1.Cells(nextRow, "B").Value = .List(i, 0) 'Qtde ws1.Cells(nextRow, "D").Value = .List(i, 1) 'Fornecedor

    ' ............ ' plan2 ws2.Cells(nextRow_1, "B").Value = .List(i, 0) 'Qtde ws2.Cells(nextRow_1, "D").Value = .List(i, 1) 'Fornecedor ' ............ Next i .Clear Unload Me End With


     

    Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br

    • Marcado como Resposta NickThome quarta-feira, 21 de março de 2018 13:48
    terça-feira, 20 de março de 2018 19:59

Todas as Respostas

  • Neste exemplo as colunas são definidas de acordo com o numero da coluna do Listbox

    E como a 1ª coluna do listbox começa com 0 (zero) referenciei a 1º coluna da plan como j +1 

        Dim i         As Integer
        Dim J         As Integer
        Dim nextRow   As Integer
        Dim nextRow_1 As Integer
        
        With Me.Lista_Produtos
            
            For i = 0 To .ListCount - 1
                nextRow = Sheets("Banco_Dados").Cells(.Rows.Count, "A").End(xlUp).Offset(1, 1).Row
                nextRow_1 = Sheets("SUA_OUTRA_PLAN").Cells(.Rows.Count, "A").End(xlUp).Offset(1, 1).Row
                
                For J = 0 To .ColumnCount
                    Sheets("Banco_Dados").Cells(nextRow, J + 1) = .List(i, J)
                    Sheets("SUA_OUTRA_PLAN").Cells(nextRow_1, J + 1) = .List(i, J)
                Next J
                
            Next i
            
            .Clear
            Unload Me
            Exit Sub
            
        End If
        
    End With

     

    Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br

    segunda-feira, 19 de março de 2018 19:06
  • Valeu pela ajuda!
    Mas to recebendo erro: Metodo ou membro de dados não encontrado

    Está no .Rows do Banco_Dados...

    segunda-feira, 19 de março de 2018 19:46
  • Ops! Desculpe, por favor retire o "." ponto de .Rows.Count - > Rows.Count



    Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br



    • Editado Ricardo Vba segunda-feira, 19 de março de 2018 20:27
    segunda-feira, 19 de março de 2018 19:57
  • Agora foi, Ricardo!
    Obrigado!

    Poderia me orientar como altero as colunas onde serão salvos cada dado da listbox?
    "Qtde" coluna 2, "Fornecedor" coluna 4 (...)

    terça-feira, 20 de março de 2018 19:39
  • Neste caso, com colunas alternadas, é melhor alterar a forma dinâmica de inserir os dados, eliminando o laço for j .

    Exemplo

    Dim i As Integer Dim nextRow As Integer Dim nextRow_1 As Integer Dim ws1 As Worksheet Dim ws2 As Worksheet With ThisWorkbook Set ws1 = .Sheets("Banco_Dados") ' plan1 Set ws2 = .Sheets("SUA_OUTRA_PLAN") ' plan2 End With With Me.Lista_Produtos For i = 0 To .ListCount - 1 nextRow = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Offset(1).Row nextRow_1 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Offset(1).Row ' plan1 ws1.Cells(nextRow, "B").Value = .List(i, 0) 'Qtde ws1.Cells(nextRow, "D").Value = .List(i, 1) 'Fornecedor

    ' ............ ' plan2 ws2.Cells(nextRow_1, "B").Value = .List(i, 0) 'Qtde ws2.Cells(nextRow_1, "D").Value = .List(i, 1) 'Fornecedor ' ............ Next i .Clear Unload Me End With


     

    Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br

    • Marcado como Resposta NickThome quarta-feira, 21 de março de 2018 13:48
    terça-feira, 20 de março de 2018 19:59
  • Opa, Ficou perfeito, Ricardo!

    Muito obrigado! =D

    Estou com dúvidas em outros pontos da Planilha, mas creio que vai ser mais complicado de resolver.

    Como estou com alguns projetos em paralelo aqui na empresa, vou dar andamento neles e em breve abro um novo tópico para sanar as novas dúvidas.

    Obrigado novamente e boa semana!

    quarta-feira, 21 de março de 2018 13:47