Olá queridos amigos do fórum,
Venho aqui novamente pedir ajuda aos nobres colegas.
Tenho a seguinte rotina para preencher um ListView com dados de linhas preenchidas na Coluna A:
LastRow = Plan1.Cells(Rows.Count, "a").End(xlUp).Row ListView1.ListItems.Clear For X = 2 To LastRow Set li = ListView1.ListItems.Add(Text:=Plan1.Cells(X, "a").Value) Next
O que eu preciso é preencher o ListView com dados de linhas preenchidas de acordo com as colunas. Ou seja,
Ao invés do código andar para baixo pegando as linhas preenchidas, assim:
Linha1
Linha2
Linha3
Linha4
(sempre para baixo)
Ele ande da esquerda para a direita pegando as colunas preenchidas, assim:
Coluna1 > Coluna2 > Coluna3 > Coluna4
(sempre da esquerda para a direita)
Tem um arquivo em anexo para ilustrar melhor a minha dúvida.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
bilokas,
Boa Tarde!
Veja se assim lhe atende.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Obrigado pela resposta wagner.
O modelo que você propôs não atende o problema.
Vou tentar explicar de uma forma mais direta:
Preciso preencher o ListView com a quantidade de colunas preenchidas.
No caso imagine que tem 10 colunas preenchidas, na linha 2.
Então o código identifica o conteúdo dessas 10 colunas na linha 2 e lista na coluna A do ListView.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
Para ficar mais claro, O código tem que listar na coluna A do ListView todas as colunas preenchidas na linha 2 por exemplo.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
Para ficar mais claro, poderão haver colunas em branco?
Tipo: A, B, C, D, E preenchidas
Coluna F em branco
Colunas G, H, I preenchidas
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Não, JoseA. Não vai ter colunas em branco no meio.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
Option Explicit Private Const NomePlanilha As String = "Plan1" Private Const LinhaCabecalho As Integer = 1 Private Sub UserForm_Initialize() PreencherCabeçalhoLinhas End Sub Private Sub PreencherCabeçalhoLinhas() 'Desenvolvida por: Tomás Vásquez 'Adaptada por: José Arnaldo 'Implementado por: Mauro Coutinho Dim ws As Worksheet Dim coluna As Integer Dim linha As Integer Set ws = ThisWorkbook.Worksheets(NomePlanilha) coluna = 1 linha = LinhaCabecalho Me.ListView1.ListItems.Clear Me.ListView1.ColumnHeaders.Clear Dim itm As ListItem, n As Long, lngCol As Long Dim vardata As Variant vardata = Range("A1").CurrentRegion.Value With ws While .Cells(linha, coluna).Value <> Empty With ListView1 .View = lvwReport .Gridlines = True .ColumnHeaders.Add Text:=ws.Cells(linha, coluna), Width:=ws.Cells(linha, coluna).Width End With coluna = coluna + 1 Wend 'Preenche as Linhas With ListView1 For n = 2 To UBound(vardata) Set itm = .ListItems.Add(n - 1, , vardata(n, 1)) For lngCol = 2 To UBound(vardata, 2) itm.ListSubItems.Add , , vardata(n, lngCol) Next lngCol Next n End With End With End Sub
Elaborado com ajuda do nosso brilhante amigo Mauro Coutinho
http://www.tomasvasquez.com.br/forum/viewtopic.php?f=17&t=1688
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Me esqueci de um ponto importate, não irá funcionar se a primeira linha estiver mesclada - como no exemplo que voce anexou. Repita o título para cada coluna.
Perceba que a largura das linhas no ListView são auto ajustadas as da plan.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Obrigado por responder joseA, mas ainda não é exatamente isso.
Vou mostrar uma imagem para tentar explicar de uma forma ilustrativa.
É EXATAMENTE isso que eu quero que o ListView exiba.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
Querias que a partir da coluna C fosse carregado para o controle na forma de linhas, isso idependente do nº de colunas preenchidas. Certo?
Demandaria tempo, depois posso até tentar (sem tempo agora).
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Não joseA, não é isso. Não sei mais como explicar.
A partir da coluna D, TUDO que estiver preenchido nas COLUNAS seguintes APENAS na linha 2 por exemplo, seja exibido numa única coluna em um ListView.
Não sei como ser mais objetivo na minha dúvida do que isso.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
Ok.
Veja se é assim.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Wagner, simples o funcional. Era exatamente isso que eu precisava.
Obrigado mais uma vez pela ajuda!
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
No caso, faltaram informações. Sua planilha vai ter sua uma linha preenchida mesmo?
Resolvido. Assim também, já que me deu trabalho.
Private Sub UserForm_Initialize() Dim linha, coluna As Integer Dim C As Variant Dim li As ListItem linha = 2 coluna = 2 With ListView1 .Gridlines = True .View = lvwReport .ColumnHeaders.Add Text:="ANEXOS", Width:=120 End With For Each C In Plan1.Range(Cells(linha, coluna), _ Cells(linha, Plan1.Range("A1").End(xlToRight).Column)) Set li = ListView1.ListItems.Add(Text:=C) Next C End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Obrigado por responder joseA, o Wagner já tinha dado uma solução, mas também testei a sua e funcionou.
Bom fica as duas sugestões ai para o fórum como forma de conhecimento e dúvida de futuros usuários.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br