Jump to content
Sign in to follow this  
aguia

Cabeçalho da Listbox via Array

Recommended Posts

aguia

Bom dia!

Olá a todos, antes de mais queria saudar todo o pessoal do fórum.

Sou novo por aqui... e no VBA. Vou tentar aprender e ajudar com o pouco que sei...

É possível fazer com que os primeiros itens de uma matriz sejam o cabeçalho de uma Listbox?

Exemplo:

Eu tenho uma matriz  Myarray(9,5)

Gostaria que os todos os dados da linha 0 fossem o cabeçalho das várias colunas da listbox, mas via array não estou a conseguir, somente via rowsourse, definindo a parte da folha que contem os dados.

Grato.

Águia

Share this post


Link to post
Share on other sites
aguia

Boa tarde.

É em excel.

O código do procedimento que pretendo que faça isso é o que está abaixo.

Sub existenciasPU()
   Dim GDH As Variant, GDHsaida As Variant
   Dim existe As Integer, i As Integer
   Dim PU As Currency

   Worksheets("Folha3").Select 'seleccionar a folha3 para apagar os valores existentes antes de lá pôr outros
   Range("A2:C65000").Clear 'Esta Folha3 serve para ver que valores estão a ir para o array
   Range("D2:F65000").Clear

   Worksheets("Folha2").Activate 'selecciona a folha com interesse para estas acções

   lastRow = Cells(Rows.Count, 2).End(xlUp).Row ' Verifica qual a ultima linha preenchida na coluna B

   contador = 0
   For Each GDH In Range("B" & lastRow & ":B2") ' está a começar do fim para ver se ficam logo ordenados no array pelos mais antigos
       'MsgBox "GDH existPU = " & GDH
       If GDH.Offset(0, 1) <> "" Then
           existe = GDH.Offset(0, 3)
           PU = GDH.Offset(0, 2)
           'MsgBox GDH.Offset(0, 1) <> ""
       ElseIf GDH <> "" And GDH.Offset(0, 1) = "" Then
           existe = GDH.Offset(0, 3)
           PU = GDH.Offset(0, 2)
       End If

       a = existe 'quantidade existente para determinado preço
       b = PU 'preço unitário para esta quantidade
       'c = GDH 'GDH da entrada do artigo
       e = ListBox1.Value 'Artigo analisado

       'MsgBox contador
       Dim existem(0 To 65000, 0 To 3) As Variant 'array para guardar os valores achados
           existem(contador, 0) = e 'Artigo analisado
           existem(contador, 1) = a 'quantidade existente para determinado preço
           existem(contador, 2) = b 'Preço de custo
           'existem(contador, 3) = c 'GDH da entrada do artigo

           Sheets("Folha3").Cells(contador + 1, 1) = existem(contador, 0) 'coloquei os valores nesta folha para ver que valores ali chegavam
           Sheets("Folha3").Cells(contador + 1, 2) = existem(contador, 1)
           Sheets("Folha3").Cells(contador + 1, 3) = existem(contador, 2)
           'Sheets("Folha3").Cells(contador + 1, 4) = existem(contador, 3)
           'Sheets("Folha3").Cells(contador + 1, 4).NumberFormat = "ddmmmyy hh:mm:ss;@"
           contador = contador + 1
   Next GDH

   'preencher o listbox

   For i = 1 To 1 'contador

       ListBox2.Clear 'apaga o que a ListBox contiver
       ListBox2.ColumnCount = 3 ' n.º de colunas que a listagem vai possuir
       ListBox2.ColumnWidths = 90 & ";" & 50 & ";" & 60
       ListBox2.ColumnHeads = True 'acrescenta a linha para os cabeçalhos na ListBox
                                   'Para fazer aparecer os títulos na ListBox devemos seleccionar a ListBox & _
                                   'e em ColumnHeads, nas propriedades, meter True.

       ListBox2.List = existem() 'a listbox carrega os valores do array

       'ListBox2.AddItem , 0 'adiciona a linha de cabeçalho

       'ListBox2.List(0, 0) = "Artigo" 'introduzindo o cabeçalho desta forma coloquei a propriedade ColumnHeads=False
       'ListBox2.List(0, 1) = "Existências"
       'ListBox2.List(0, 2) = "PU em €"

       'selecciona o primeiro item da lista
       ListBox2.ListIndex = 0

   Next i

   'Apagar a Folha2 que já não é mais necessária
   Application.DisplayAlerts = False
   'Sheets("Folha2").Delete
   Application.DisplayAlerts = True

End Sub

Share this post


Link to post
Share on other sites
joseA

Tente adaptar...

Sub PovoarLista()
Me.ListBox4.Clear
Dim Cont, UltimaLinha
UltimaLinha = Plan2.Range("A65000").End(xlUp).Row
For Cont = 1 To UltimaLinha
Me.ListBox4.AddItem Plan2.Range("A" & Cont)
Me.ListBox4.List(Me.ListBox4.ListCount - 1, 1) = Plan2.Range("B" & Cont)
Me.ListBox4.List(Me.ListBox4.ListCount - 1, 2) = Format(Plan2.Range("C" & Cont), "00")
Me.ListBox4.List(Me.ListBox4.ListCount - 1, 3) = Plan2.Range("D" & Cont)
Me.ListBox4.List(Me.ListBox4.ListCount - 1, 4) = Plan2.Range("E" & Cont)
Me.ListBox4.List(Me.ListBox4.ListCount - 1, 5) = Plan2.Range("F" & Cont)
Me.ListBox4.List(Me.ListBox4.ListCount - 1, 6) = Format(Plan2.Range("G" & Cont), "00")
Me.ListBox4.List(Me.ListBox4.ListCount - 1, 7) = Format(Plan2.Range("H" & Cont), "#,##0.00")
Next
End Sub

😲

Share this post


Link to post
Share on other sites
aguia

Olá joseA,

                  estive a analisar o seu código, e se não estiver enganado ele recorre a uma folha de excel para carregar a listbox. Se assim for, não é isto que eu pretendo. Eu pretendo que através de um array se consiga carregar os cabeçalhos de uma listbox num formulário.

Se não fui suficientemente claro agradeço que me diga. Obrigado.

Share this post


Link to post
Share on other sites
joseA
... estive a analisar o seu código, e se não estiver enganado ele recorre a uma folha de excel para carregar a listbox ...

Tens razão não havia compreendido sua solicitação, torço para que encontres a solução adequada.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.