ATENÇÃO NOVOS USUÁRIOS
Se registrou recentemente? Seu cadastro será avaliado e mendiante aprovação, a conta será ativada e você poderá usufruir do fórum. O tempo de avaliação gira em torno de 24 a 48 horas.
Esqueceu sua senha?
Você pode usar o mecanismo de lembrete neste link:
Recuperar senha
Você receberá um link de reativação no email cadastrado.
Não recebeu o email? Lembre-se checar o Lixo Eletrônico.
Dicas dos mais variados tipos, necessidades, angústias, enfim
-
joseA
- Jedi

- Mensagens: 1008
- Registrado em: Qui Out 22, 2009 7:22 am
- Localização: Cel. Fabriciano - MG
Mensagem
por joseA » Ter Fev 21, 2012 10:20 am
Olá,
Adaptando uma função do Tomás foi possivel encontrar um preenchimento do cabeçalho e ajuste das colunas, conforme dados da plan, em um controle ListView, bastante simplificado. Faça o teste:
Código: Selecionar todos
Private Sub PreencherCabeçalho()
'Desenvolvida por: Tomás Vásquez
'Adaptada por: José Arnaldo
Dim ws As Worksheet
Dim coluna As Integer
Dim linha As Integer
Set ws = Plan1
coluna = 1
linha = 1
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
End With
End Sub
Faltou um preenchimento simplificado para as linhas. Alguma sugestão??
Se o post lhe agradou clique no sinal de positivo (ao lado de citar).

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.
-
Mauro Coutinho
- Jedi

- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Mensagem
por Mauro Coutinho » Ter Fev 21, 2012 7:00 pm
José aproveitando uma outra rotina a qual postarei em outro tópico, para preenchermos as linhas tambem a mesma ficaria assim :
Código: Selecionar todos
Private Sub PreencherCabeçalho()
'Desenvolvida por: Tomás Vásquez
'Adaptada por: José Arnaldo
Dim ws As Worksheet
Dim coluna As Integer
Dim linha As Integer
Set ws = Plan1
coluna = 1
linha = 1
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
'Preenche as Linhas
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
coluna = coluna + 1
Wend
End With
End Sub
Era isto que se referiu ?
Faltou um preenchimento simplificado para as linhas. Alguma sugestão??
[]s
Mauro Coutinho - Exemplos Somente em Office 2003
São José dos Pinhais - Pr
Se sua Duvida foi solucionada . . . .Acrescente [RESOLVIDO] ao título.
Ficou satisfeito com o FORUM ? Divulgue, indicando-o aos colegas !
-
Mauro Coutinho
- Jedi

- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Mensagem
por Mauro Coutinho » Ter Fev 21, 2012 7:09 pm
Uma outra forma de preenchermos o Cabeçalho do ListView e as Linhas, seria com as s rotinas abaixo, infelizmente não tenho o autor, se alguem souber, favor colocar os creditos :
Código: Selecionar todos
Private Sub UserForm_Initialize()
Dim itm As ListItem, n As Long, lngCol As Long
Dim vardata As Variant
vardata = Range("A1").CurrentRegion.Value
With Me.ListView1
.ColumnHeaders.Clear
For n = 1 To UBound(vardata, 2)
.ColumnHeaders.Add n, , vardata(1, n), 50
Next n
.HideColumnHeaders = False
.View = lvwReport
.Gridlines = True
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 Sub
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
'Ordenar pela Coluna Clicada
With ListView1
If .SortKey = ColumnHeader.Index - 1 Then
If .SortOrder = lvwAscending Then
.SortOrder = lvwDescending
Else
.SortOrder = lvwAscending
End If
Else
.SortKey = ColumnHeader.Index - 1
End If
.Sorted = True
End With
End Sub
{]s
Mauro Coutinho - Exemplos Somente em Office 2003
São José dos Pinhais - Pr
Se sua Duvida foi solucionada . . . .Acrescente [RESOLVIDO] ao título.
Ficou satisfeito com o FORUM ? Divulgue, indicando-o aos colegas !
-
joseA
- Jedi

- Mensagens: 1008
- Registrado em: Qui Out 22, 2009 7:22 am
- Localização: Cel. Fabriciano - MG
Mensagem
por joseA » Qua Fev 22, 2012 10:06 am
Grande Mauro, Bom dia!!
No 2º procedimento funcionou beleza, deu até para adaptar o ajuste de colunas. Agora, no 1º adaptado os dados repetem.
Veja em um pequeno exemplo para demosntração.
Obs.: O arquivo com erro foi substituido, esse aí rola redondo.
-
Anexos
-
- PreencherListViewSimplificado.zip
- Atualizado: 22/02/2012 às 14:07
- (27.42 KiB) Baixado 652 vezes
Editado pela última vez por
joseA em Sáb Fev 25, 2012 7:12 pm, em um total de 2 vezes.
Se o post lhe agradou clique no sinal de positivo (ao lado de citar).

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.
-
Mauro Coutinho
- Jedi

- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Mensagem
por Mauro Coutinho » Qua Fev 22, 2012 11:19 am
José, não tinha reparado qdo fiz o teste, mas acredito é só questão de adaptação, depois verifico melhor, por hora podemos ajustar a não repetição, mudando as instruções que preenchem a linha de lugar :
Código: Selecionar todos
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
[]s
Mauro Coutinho - Exemplos Somente em Office 2003
São José dos Pinhais - Pr
Se sua Duvida foi solucionada . . . .Acrescente [RESOLVIDO] ao título.
Ficou satisfeito com o FORUM ? Divulgue, indicando-o aos colegas !
-
joseA
- Jedi

- Mensagens: 1008
- Registrado em: Qui Out 22, 2009 7:22 am
- Localização: Cel. Fabriciano - MG
Mensagem
por joseA » Qua Fev 22, 2012 1:16 pm
Obrigado Mauro,
Agora rodou legal, atualizei o anexo corrigido.
Fica aí uma opção para um preenchimento, sem a chatice de ficar definindo títulos e largura de colunas e sequência de dados para linha e colunas uma a uma. Lógico que em algumas conveniencias o modo "tradicional" prevalecerá.
Abraços.
Se o post lhe agradou clique no sinal de positivo (ao lado de citar).

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.