Usuário com melhor resposta
Salvar ListBox em mais de 1 Plan

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
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
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
-
-
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
-
-
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
-
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!