Listbox X valor mon...
 
Notifications
Clear all

Listbox X valor monetário

16 Posts
3 Usuários
0 Reactions
3,504 Visualizações
wfranca
(@wfranca)
Posts: 297
Reputable 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

Welington Gonçalves

 
Postado : 02/10/2013 2:23 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

wfranca,

Boa Noite!

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

Format(Objeto.Propriedade, "#,##0.00")

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 02/10/2013 3:10 pm
wfranca
(@wfranca)
Posts: 297
Reputable 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...

Welington Gonçalves

 
Postado : 02/10/2013 4:29 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

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

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 03/10/2013 5:53 am
wfranca
(@wfranca)
Posts: 297
Reputable 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

Welington Gonçalves

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

A rotina que deve disponibilizar /alterar e

Call PreencheCampos

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/10/2013 7:44 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

wfranca,

Como disse o Reinaldo...

precisamos da rotina Call PreencheCampos.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 03/10/2013 8:46 am
wfranca
(@wfranca)
Posts: 297
Reputable 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

Welington Gonçalves

 
Postado : 03/10/2013 10:23 am
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/10/2013 11:21 am
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/10/2013 12:51 pm
Fernando Fernandes
(@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.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/10/2013 1:14 pm
wfranca
(@wfranca)
Posts: 297
Reputable 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...

Welington Gonçalves

 
Postado : 03/10/2013 1:22 pm
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/10/2013 2:04 pm
wfranca
(@wfranca)
Posts: 297
Reputable Member
Topic starter
 

rs.. que zica..

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

Reinaldo ainda não consegui resultado...

Welington Gonçalves

 
Postado : 03/10/2013 2:42 pm
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

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