Listbox X valor mon...
 
Notifications
Clear all

Listbox X valor monetário

16 Posts
3 Usuários
0 Reactions
3,472 Visualizações
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Tenho uma listbox, nela tenho 9 colunas que me carregam valores...

considerando que minha coluna 7 é o meu valor de produtos... como posso fazer para que a listbox me carregue a coluna 7 em valor monetário?

PS

Quando carrega... ele está me trazendo muitas casas depois da virgula..

Ex

12,33333333333

 
Postado : 02/10/2013 2:23 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

wfranca,

Boa Noite!

Utilize a função Format do VBA, da seguinte forma:

Format(Objeto.Propriedade, "#,##0.00")
 
Postado : 02/10/2013 3:10 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Wagner, mas esse comando não iria monetizar todos valores das colunas da minha listbox? Porque na verdade eu preciso que apenas uma coluna da listbox seja monetizada...

 
Postado : 02/10/2013 4:29 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Cole aqui o código que carrega os ítens para as coluna do listbox.

 
Postado : 03/10/2013 5:53 am
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Segue Wagner...

tentei atrubuir mas não consegui

Private Sub UserForm_Initialize()

ListBoxLista.ColumnWidths = "50;50;200;60;60;50;50;50;50;50"
Call PreencheCampos
txtcodigo.SetFocus

Application.Visible = False

Dim ws As Worksheet
Set ws = Sheets("estoque")

end sub

 
Postado : 03/10/2013 6:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

A rotina que deve disponibilizar /alterar e

Call PreencheCampos

 
Postado : 03/10/2013 7:44 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

wfranca,

Como disse o Reinaldo...

precisamos da rotina Call PreencheCampos.

 
Postado : 03/10/2013 8:46 am
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Desculpe gente...

segue

Private Sub PreencheCampos()
Dim ws As Worksheet
Dim coluna As Integer
Dim linha As Integer
Set ws = ThisWorkbook.Worksheets(NomePlanilha)
coluna = 1
linha = LinhaCabecalho

With ws
While .Cells(linha, coluna).Value <> Empty
Me.ComboBoxCampos.AddItem .Cells(linha, coluna)
coluna = coluna + 1
Wend
End With
End Sub

 
Postado : 03/10/2013 10:23 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Talvez assim:

Private Sub PreencheCampos()
Dim ws As Worksheet, Coluna As Integer, Linha As Integer
Set ws = ThisWorkbook.Worksheets(NomePlanilha)
Coluna = 1
Linha = LinhaCabecalho
    With ws
        While .Cells(Linha, Coluna).Value <> Empty
            If Coluna <> 7 Then
                Me.ComboBoxCampos.AddItem .Cells(Linha, Coluna)
            Else
                Me.ComboBoxCampos.AddItem Format(.Cells(Linha, Coluna), "#,##0.00")
            End If
        Coluna = Coluna + 1
        Wend
    End With
End Sub
 
Postado : 03/10/2013 11:21 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Talvez assim:

Private Sub PreencheCampos()
Dim ws As Worksheet, Coluna As Integer, Linha As Integer
Set ws = ThisWorkbook.Worksheets(NomePlanilha)
Coluna = 1
Linha = LinhaCabecalho
    With ws
        While .Cells(Linha, Coluna).Value <> Empty
            If Coluna <> 7 Then
                Me.ComboBoxCampos.AddItem .Cells(Linha, Coluna)
            Else
                Me.ComboBoxCampos.AddItem Format(.Cells(Linha, Coluna), "#,##0.00")
            End If
        Coluna = Coluna + 1
        Wend
    End With
End Sub

Só espero que "ComboBoxCampos" seja um nome que tenha dado ao ListBox.

[]s

 
Postado : 03/10/2013 12:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ops!!
Puxa vida Mauro, voce tem razão (como sempre).
Essa rotina deve adicionar os dados em uma combobox, já que a primeira rotina postada se refere a "ListBoxLista".
Assim sendo (vamos no achometro) essa listbox deve estar sendo carregada por uma range de planilha, e não via codigo.

 
Postado : 03/10/2013 1:14 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

exatamente...

postei o modelo caso ajude...

mas pelo que testei.. continuo não obtendo resultado... não sei se é por conta do meu sub prenchimento...

 
Postado : 03/10/2013 1:22 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se não me engano é neste evento

Private Sub PreencheLista(ByVal TextoDigitado As String)
    Dim ws As Worksheet
    Dim i As Integer
    Dim X As Integer
    Dim indiceLista As Integer
    Dim Coluna As Integer
    Dim TextoCelula As String
    Set ws = ThisWorkbook.Worksheets(NomePlanilha)
    Dim Lista()

    ReDim Lista(ws.UsedRange.Columns.Count, 0)

    i = LinhaCabecalho + 1
    indiceLista = 1
    Coluna = Me.ComboBoxCampos.ListIndex + 1
    Call PreencheCabecalho(Lista)

    ListBoxLista.Clear
    With ws
        While .Cells(i, Coluna).Value <> Empty
            TextoCelula = .Cells(i, Coluna).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then

                For X = 0 To ws.UsedRange.Columns.Count - 1
                    ReDim Preserve Lista(ws.UsedRange.Columns.Count, indiceLista)
                    If X <> 6 Then
                        Lista(X, indiceLista) = .Cells(i, X + 1)
                    Else
                        Lista(X, indiceLista) = Format(.Cells(i, X + 1), "#,##0.00")
                    End If
                Next

                indiceLista = indiceLista + 1
            End If
            i = i + 1
        Wend
    End With
   
    Lista = Array2DTranspose(Lista)

    Me.ListBoxLista.List = Lista
End Sub
 
Postado : 03/10/2013 2:04 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

rs.. que zica..

nunca vi um código tão complicado...

Reinaldo ainda não consegui resultado...

 
Postado : 03/10/2013 2:42 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

rs.. que zica..

nunca vi um código tão complicado...

Reinaldo ainda não consegui resultado...

Franca, o código não chega ser tão complicado, claro que como já temos um pouco mais de experiencia facilita, mas o que torna os códigos mais complicados é a razão de pegarmos varios códigos criados para determinado aplicativo e querermos adapta-lo a nossa condição.
Em seu modelo tem vários códigos, alguns com nomes diferentes mas executando a mesma ação.
Na rotina PreencheCampos() eu não entendi o porque da formatação, uma vez que estamos carregando o Combo sómente com os itens que serão para definir por qual deles iremos filtrar.
No botão btnCancelar temos referencias a vários controles nomeados que não existem no formulário, gerando erros ao clicar no mesmo.

Sinceramente, parei por ai, se não teria de recriar tudo do inicio para entender toda a sistematica.

Procure limpar todo o lixo que tem nas rotinas, não deixe controles que não existem, nem rotinas que não são utilizadas, isto só vem a gerar erros mais tarde dificultando a analise.

Para não ficar vago, vamos a formatação do seu listbox, eu particularmente prefiro utilizar o ListView que tem muito mais propriedades de formatação.

Na rotina que o Reinaldo postou, altere somente a seguinte linha :
Esta :
Lista(X, indiceLista) = Format(.Cells(i, X + 1), "#,##0.00")
Por esta :
Lista(X, indiceLista) = Format(.Cells(i, X + 1), "Currency")

Aproveitando, no UserForm4 que tem neste seu modelo, na Rotina Private Sub buscar_valores(), para carregar os Valores formatados, altere a seguinte Linha :
Esta :
.List(linhalistbox, 5) = Sheets("estoque").Cells(Linha, 6)
Por esta :
.List(linhalistbox, 5) = Format(Sheets("estoque").Cells(Linha, 6), "Currency")

Assim os valores serão carregados formatados.

Faça as alterações e teste, qq coisa retorne.

[]s

 
Postado : 03/10/2013 6:38 pm
Página 1 / 2