Ir para conteúdo
Fórum Script Brasil
  • 0

Listbox e Listview


Michelle Alves

Pergunta

Preciso de duas coisas:

- Primeiro: Quero carregar um Listview com os dados da minha planilha de produtos.

- Segundo: Enviar os dados do textbox1, textbox2 e textbox3 para a Listview, e toda vez que ela receber novos dados não sobreescreva, mas acrescente.

E preciso fazer o mesmo com o Listbox, lembrando que já tentei o comando ListBox1.ListIndex = TextBox1.Value. Porém, quando existe mais de um Text, ele concatena os dados.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Obrigada Leandro,

Tentei de duas formas, do seu modo e assim:

Private Sub CommandButton1_Click()

ListBox1.AddItem

ListBox1.List(0) = TextBox1.Value

ListBox1.List(1) = TextBox2.Value

End Sub

Ambos deram matriz inválida. Dizendo que falta definir a propriedade List

Editado por Michelle Alves
Link para o comentário
Compartilhar em outros sites

  • 0

michelle, se eu entendi direito, o q você quer pra listbox seria tipo isso:

ListBox1.AddItem TextBox1.Text
ListBox1.AddItem TextBox2.Text[/code] pra listview deve ser tipo isso:
[code]Dim Item As ListItem

Set item = ListView1.ListItems.Add(, , TextBox1.Text)
Set item = ListView1.ListItems.Add(, , TextBox2.Text)

alias, to olhando o seu codigo agora... q versao do visual basic é essa q você usa?? por acaso não é visual basic .net não ne??

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Kuroi,

Então, eu estou usando VBA do Excel pra fazer um controle de estoque aqui na empresa. estou sem saber se uso o Listview ou o Listbox, embora seja melhor o view ele é mais complicado de trabalhar....

Inclusive, seguindo suas instruções o Set deu procedimento inválido. teria que declarar ele ?

Além disso, usando o Listbox como você disse, cada text iria para uma linha do List, e eu gostaria que ambos os valores (text1 e text20 ficassem na mesma linha.

Editado por Michelle Alves
Link para o comentário
Compartilhar em outros sites

  • 0

entendi agora.

michelle se você ta usando vba, poste sempre na sala de vba pra não confundir.

então, o listview faz muito mais coisas q o listbox (por exemplo, você pode por varias colunas tb, pode por desenhenhinho e pode por tooltiptext em cada item, por exemplo), mas se você não vai usar nenhuma delas, use o listbox q é muito mais facil mesmo.

pra adicionar um item no listbox é aquele codigo mesmo:

ListBox1.AddItem TextBox1.Text
ai se você quer adicionar o texto na mesma linha, faca:
ListBox1.List(0) = ListBox1.List(0) & TextBox2.Text
o codigo do leandro tava dando erro porque quando você da o additem so uma vez ele vai ter um unico item. você tentou editar a segunda linha (.List(1)) e ela não existe. quanto ao set, não sei não. tentei esse codigo aqui no excel 2003 e não teve problema nenhum:
Dim Item As ListItem

Set Item = ListView1.ListItems.Add(, , TextBox1.Text)
Set Item = ListView1.ListItems.Add(, , TextBox2.Text)[/code]

você não precisa declarar Set porque ele é um comando do proprio Visual Basic, não é funcao nem variavel.

qual versao do office você ta usando?? por acaso você tem instalado no pc o visual studio 2008??

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigada Kuroi. Desculpa por ter postado errado eu achei que não havia diferença....

Então, eu tenho o Visual Studio 6.0 instalado. Entendi suas explicações, embora o Listview ainda esteja dando erros e me dando muito trabalho. Acho que vou optar pelo Listbox mesmo. Você esqueceu de me responder uma questão, e como estou precisando vou abusar. Como eu faço o Listbox carregar todos os dados de uma planilha e ficando alinhados ? Tentei sem sucesso da seguinte forma :

Private Sub TextBox5_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        ListBox1.Clear
        Call Pesquisa
    End If
End Sub

Private Sub UserForm_Initialize()
         ListBox1.Clear
        Call Pesquisa

End Sub

Private Sub Pesquisa()
    Dim I%
    I = 0
    Sheets("BDCQE").Range("B2").Select
    Do While ActiveCell <> ""
        If InStr(1, ActiveCell, TextBox5) > 0 Then
            ListBox1.AddItem ActiveCell
            ListBox1.List(I, 1) = ActiveCell.Offset(0, 1).Value
            ListBox1.List(I, 2) = ActiveCell.Offset(0, 2).Value
            I = I + 1
        End If
        ActiveCell.Offset(1, 0).Select
        
    Loop
End Sub

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

  • 0

mas então michelle, na verdade ainda não entendi direito exatamente o q você quer fazer.

na verdade, no vba, no listbox você consegue definir colunas tb (no visual basic não conseguia), ai acho q o q você quer é separar em colunas e não por o texto todo num item so como no meu exemplo, certo??

bom, não entendi essa parte do textbox5 no seu codigo, mas veja se não é isso q você quer:

Private Sub Pesquisa()
    Dim i As Integer, j As Integer
    
    i = 0
    Sheets("Plan1").Range("A1").Select
    Do While ActiveCell <> ""
        j = 0
        Do While ActiveCell <> ""
            If j = 0 Then
                ListBox1.AddItem ActiveCell
            Else
                If ListBox1.ColumnCount <= j Then
                    ListBox1.ColumnCount = ListBox1.ColumnCount + 1
                End If
                ListBox1.Column(j, i) = ActiveCell
            End If
            j = j + 1
            
            ActiveCell.Offset(0, 1).Select
        Loop
        ActiveCell.Offset(1, 0).Select
        ActiveCell.EntireRow.Select
        i = i + 1
    Loop
End Sub[/code]

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi,

Consegui concluir esse agora pouco. Mesmo assim muito obrigada !!!

Vou postar o código abaixo para ajudar em futuras pesquisas.

Private Sub UserForm_Initialize()

'Carrega a listbox com os itens da planilha BDCQE

Dim linha As Integer

On Error GoTo ErrHandler

linha = Range("A65000").End(xlUp).Row

i = 0

With Worksheets("BDCQE")

While linha <> 1

Me.ListBox1.AddItem , ListIndex

ListBox1.List(i, 0) = Sheets("BDCQE").Cells(linha, 3)

ListBox1.List(i, 1) = Sheets("BDCQE").Cells(linha, 2)

ListBox1.List(i, 2) = Format(Sheets("BDCQE").Cells(linha, 4), "R$ 0.00")

ListBox1.ListIndex = 0

linha = linha - 1

Wend

End With

ExitHere:

Exit Sub

ErrHandler:

MsgBox Err.Description

Resume ExitHere

End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

Oi

Estou tentando fazer  um controle de estoque, apliquei este cod. abaixo de  alterar entrada só que n Planilha deu certo, mas no listview ao invés de fazer o mesmo ele acrecenta o número do lado não faz a soma, por favor me ajude, no que estou errando....

Private Sub btAlterar_Click()
    ultimaLinha = Plan1.Cells(Plan1.Cells.Rows.Count, "a").End(xlUp).Row + 1
    For i = 2 To ultimaLinha
        If cdID = Plan1.Cells(i, 1) Then
            Plan1.Cells(i, 2) = UCase(cdProduto)
            Plan1.Cells(i, 3) = UCase(cdUnid)
            Plan1.Cells(i, 4) = UCase(cdQuantidade)
            Plan1.Cells(i, 5) = UCase(cdGrupo)
            Plan1.Cells(i, 4) = Plan1.Cells(i, 4) + UCase(cdEntrada)

            Exit For
        End If
    Next
    
    For i = 1 To lsLista.ListItems.Count
        If lsLista.ListItems.Item(i) = cdID Then
            lsLista.ListItems.Item(i).SubItems(1) = UCase(cdProduto)
            lsLista.ListItems.Item(i).SubItems(2) = UCase(cdUnid)
            lsLista.ListItems.Item(i).SubItems(3) = UCase(cdQuantidade)
            lsLista.ListItems.Item(i).SubItems(4) = UCase(cdGrupo)
            lsLista.ListItems.Item(i).SubItems(3) = lsLista.ListItems.Item(i).SubItems(3) + UCase(cdEntrada)

            
            Exit For
        End If
    Next
End Sub

 

Eduardo

 

 

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...