Boa tarde! Estou com um erro em um código de exibição de dados numa ListView, será que alguém pode me ajudar?
Private Sub UserForm_Initialize()
AdicionarColunasListView
PreencherListViewRes
End Sub
Sub AdicionarColunasListView()
Dim coluna As ColumnHeader
' Adiciona as colunas
With ListViewRes
' Adiciona as colunas com os cabeçalhos
Set coluna = .ColumnHeaders.Add(, , "EMPRESA")
coluna.Width = 52
Set coluna = .ColumnHeaders.Add(, , "PRODUTO")
coluna.Width = 87
Set coluna = .ColumnHeaders.Add(, , "QUANTIDADE")
coluna.Width = 100
Set coluna = .ColumnHeaders.Add(, , "APRESENTACAO")
coluna.Width = 190
Set coluna = .ColumnHeaders.Add(, , "PREÇO 1")
coluna.Width = 62
Set coluna = .ColumnHeaders.Add(, , "PREÇO 2")
coluna.Width = 50
Set coluna = .ColumnHeaders.Add(, , "EAN")
coluna.Width = 50
Set coluna = .ColumnHeaders.Add(, , "DATA")
coluna.Width = 50
Set coluna = .ColumnHeaders.Add(, , "PUBLICADA")
coluna.Width = 60
Set coluna = .ColumnHeaders.Add(, , "ATUALIZADA")
coluna.Width = 60
' Define o estilo das colunas (opcional)
ListViewRes.View = lvwReport
End With
End Sub
Sub PreencherListViewRes()
Dim searchValue As String
Dim ws As Worksheet
Dim lastRow As Long
Dim listViewRow As Long
Dim resultListView As listView
' Defina o nome da planilha onde você deseja procurar
Set ws = ThisWorkbook.Sheets("TabelaValores")
' Defina o valor do rótulo a ser pesquisado
searchValue = VPesquisado.Caption
' Limpar a ListView antes de adicionar novos resultados
Set resultListView = ListViewRes
' Encontrar a última linha na coluna A
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Loop através das células na coluna A e verificar os valores
For listViewRow = 2 To lastRow ' Começa na linha 2 para pular o cabeçalho
If LCase(Trim(ws.Cells(listViewRow, 1).value)) = LCase(Trim(searchValue)) Then
' Adicionar os valores das colunas B a K na ListView
Dim col As Integer
Dim newItem As listItem
Set newItem = resultListView.ListItems.Add(, , ws.Cells(listViewRow, "B").value)
For col = 3 To 11 ' Colunas C a K
newItem.ListSubItems.Add , , ws.Cells(listViewRow, col).value
Next col
End If
Next listViewRow
End Sub
A base da pesquisa é basicamente assim: Em um formulário o usuário insere o valor que será pesquisado, após uma série de validações ele transfere esse valor para o rótulo "VPesquisado" do formulário atual afim de inicializar o formulário preenchendo a ListView. O maior problema do código é que na hora que inicia o formulário, somente as colunas aparecem, enquanto as linhas acabam não aparecendo.
A pesquisa consiste em: Procurar o valor na coluna A da planilha "TabelaValores" e retornar os valores correspondentes a linha, coluna B a K. (considerando repetidos)
Então se eu pesquisar o nome "Peito de Peru", e ele encontrar nas linhas 3, 8 e 100, deverá retornar os valores das colunas B a K das respectivas linhas 3,8 e 100.
Utilizamos cookies e tecnologias semelhantes de acordo com a nossa Política de Privacidade, e ao continuar navegando, você concorda com estas condições.
Pergunta
IsraelB
Boa tarde! Estou com um erro em um código de exibição de dados numa ListView, será que alguém pode me ajudar?
Private Sub UserForm_Initialize()
AdicionarColunasListView
PreencherListViewRes
End Sub
Sub AdicionarColunasListView()
Dim coluna As ColumnHeader
' Adiciona as colunas
With ListViewRes
' Adiciona as colunas com os cabeçalhos
Set coluna = .ColumnHeaders.Add(, , "EMPRESA")
coluna.Width = 52
Set coluna = .ColumnHeaders.Add(, , "PRODUTO")
coluna.Width = 87
Set coluna = .ColumnHeaders.Add(, , "QUANTIDADE")
coluna.Width = 100
Set coluna = .ColumnHeaders.Add(, , "APRESENTACAO")
coluna.Width = 190
Set coluna = .ColumnHeaders.Add(, , "PREÇO 1")
coluna.Width = 62
Set coluna = .ColumnHeaders.Add(, , "PREÇO 2")
coluna.Width = 50
Set coluna = .ColumnHeaders.Add(, , "EAN")
coluna.Width = 50
Set coluna = .ColumnHeaders.Add(, , "DATA")
coluna.Width = 50
Set coluna = .ColumnHeaders.Add(, , "PUBLICADA")
coluna.Width = 60
Set coluna = .ColumnHeaders.Add(, , "ATUALIZADA")
coluna.Width = 60
' Define o estilo das colunas (opcional)
ListViewRes.View = lvwReport
End With
End Sub
Sub PreencherListViewRes()
Dim searchValue As String
Dim ws As Worksheet
Dim lastRow As Long
Dim listViewRow As Long
Dim resultListView As listView
' Defina o nome da planilha onde você deseja procurar
Set ws = ThisWorkbook.Sheets("TabelaValores")
' Defina o valor do rótulo a ser pesquisado
searchValue = VPesquisado.Caption
' Limpar a ListView antes de adicionar novos resultados
Set resultListView = ListViewRes
' Encontrar a última linha na coluna A
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Loop através das células na coluna A e verificar os valores
For listViewRow = 2 To lastRow ' Começa na linha 2 para pular o cabeçalho
If LCase(Trim(ws.Cells(listViewRow, 1).value)) = LCase(Trim(searchValue)) Then
' Adicionar os valores das colunas B a K na ListView
Dim col As Integer
Dim newItem As listItem
Set newItem = resultListView.ListItems.Add(, , ws.Cells(listViewRow, "B").value)
For col = 3 To 11 ' Colunas C a K
newItem.ListSubItems.Add , , ws.Cells(listViewRow, col).value
Next col
End If
Next listViewRow
End Sub
A base da pesquisa é basicamente assim: Em um formulário o usuário insere o valor que será pesquisado, após uma série de validações ele transfere esse valor para o rótulo "VPesquisado" do formulário atual afim de inicializar o formulário preenchendo a ListView. O maior problema do código é que na hora que inicia o formulário, somente as colunas aparecem, enquanto as linhas acabam não aparecendo.
A pesquisa consiste em: Procurar o valor na coluna A da planilha "TabelaValores" e retornar os valores correspondentes a linha, coluna B a K. (considerando repetidos)
Então se eu pesquisar o nome "Peito de Peru", e ele encontrar nas linhas 3, 8 e 100, deverá retornar os valores das colunas B a K das respectivas linhas 3,8 e 100.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.