SUBTRAIR_VALOR_ITEM_LISTBOX
Cara, não podes subtrair um texto com um número.
Ex: ([Ô]Picanha Argentina R$23,40[Ô] - 100)
Eu uso no VB.NET uma função para separar os números.
Não tenho certeza se vai funcionar em VB6, e não tenho ele instalado aqui para testar... Mas tente ai. A lógica é a mesma.
Isso claro, se você quiser usar a listbosx dessa forma.
[ô][ô][ô] <summary>
[ô][ô][ô] Função que converte uma STRING com letras para INTEGER (Somente numeros)
[ô][ô][ô] </summary>
Function strPARAint(ByVal STR As String) As Integer
strPARAint = 0
For N As Integer = 1 To Len(STR)
If IsNumeric(Mid(STR, N, 1)) Then
strPARAint = strPARAint & Mid(STR, N, 1)
End If
Next
Return strPARAint
End Function
Private Sub lvBAlt_Click()
TxtTlMsa = Format(Val(TxtTlMsa) - strPARAint(Val(LstVdas.List(LstVdas.ListIndex))), [Ô]0.00[Ô])
End Sub
Ex: ([Ô]Picanha Argentina R$23,40[Ô] - 100)
Eu uso no VB.NET uma função para separar os números.
Não tenho certeza se vai funcionar em VB6, e não tenho ele instalado aqui para testar... Mas tente ai. A lógica é a mesma.
Isso claro, se você quiser usar a listbosx dessa forma.
[ô][ô][ô] <summary>
[ô][ô][ô] Função que converte uma STRING com letras para INTEGER (Somente numeros)
[ô][ô][ô] </summary>
Function strPARAint(ByVal STR As String) As Integer
strPARAint = 0
For N As Integer = 1 To Len(STR)
If IsNumeric(Mid(STR, N, 1)) Then
strPARAint = strPARAint & Mid(STR, N, 1)
End If
Next
Return strPARAint
End Function
Private Sub lvBAlt_Click()
TxtTlMsa = Format(Val(TxtTlMsa) - strPARAint(Val(LstVdas.List(LstVdas.ListIndex))), [Ô]0.00[Ô])
End Sub
Citação:Cara, como o teu listbox está guardando um texto, a função VAL vai retornar ZERO. Verifica isso.
ASHKATCHUP, acho que vou tentar de outra maneira, ja usei CDBL, CCur, alem do VAL.
Citação:Cara, não podes subtrair um texto com um número.
Ex: ([Ô]Picanha Argentina R$23,40[Ô] - 100)
JONATHANSTECKER, Voce tem toda razao. Eu tentei usa sua funcao mais nao rola.
Function strPARAint(ByVal STR As String) As Integer
strPARAint = 0
For N As Integer = 1 To Len(STR) [ô] o vb6 nao entende toda esta linha aqui
If IsNumeric(Mid(STR, N, 1)) Then
strPARAint = strPARAint & Mid(STR, N, 1)
End If
Next
Return strPARAint [ô] e aqui tambem.
End Function
Bom eu nao vou mais tentar dessa forma, mais sempre tem outro jeito certo, vou estudar em casa com calma.
Agora se os amigos ainda tem algo na manga nesse segmento agradeco, valeu.
Como você está adicionando os itens no listbox? Qual delimitador entre o nome ([Ô]Picanha[Ô]) e o valor?
Você pode usar o cifrão como delimitador. Exemplo:
Nota:
-A função [Ô]SPLIT[Ô] transforma um texto em um vetor, baseando-se em um limitador passado como parâmetro. Após isso, eu utilizei o código [Ô](1)[Ô], para pegar o valor que está armazenado na segunda posição do vetor, que inicia no Ãndice 0.
Você pode usar o cifrão como delimitador. Exemplo:
Nota:
-A função [Ô]SPLIT[Ô] transforma um texto em um vetor, baseando-se em um limitador passado como parâmetro. Após isso, eu utilizei o código [Ô](1)[Ô], para pegar o valor que está armazenado na segunda posição do vetor, que inicia no Ãndice 0.
Private Sub Form_Load()
Dim dValor As Double
Dim sTexto As String
[ô]
sTexto = [Ô]Picanha - R$ 30,40[Ô]
dValor = CDbl(Trim(Split(sTexto, [Ô]$[Ô])(1)))
[ô]
Stop
End Sub
ASHKATCHUP,
Estou adicionando assim os itens no listbox:
Private Sub CarList()
[ô]Aqui eu monto a sub para preencher o listbox
With LstVdas
.AddItem [Ô] [Ô] & (TxtItem) & vbTab & _
(TxtVlrItem)
End With
End Sub
Formato desta forma os TextBox:
TxtItem Format(FrmMsaMve.TxtVlrItem, [Ô]R$ 0.00[Ô])
Eu estou fazendo algumas tentativas usando sua dica, mais ainda nao tive sucesso:
Private Sub lvBCancel_Click()
Dim dValor As Double
Dim sTexto As String
[ô]
sTexto = LstVdas.ListIndex
dValor = CDbl(Trim(Split(sTexto, [Ô]R$[Ô])(1)))
[ô]
Stop
End Sub
[ô]subscript out of range
Valeu amigos.
Estou adicionando assim os itens no listbox:
Private Sub CarList()
[ô]Aqui eu monto a sub para preencher o listbox
With LstVdas
.AddItem [Ô] [Ô] & (TxtItem) & vbTab & _
(TxtVlrItem)
End With
End Sub
Formato desta forma os TextBox:
TxtItem Format(FrmMsaMve.TxtVlrItem, [Ô]R$ 0.00[Ô])
Eu estou fazendo algumas tentativas usando sua dica, mais ainda nao tive sucesso:
Private Sub lvBCancel_Click()
Dim dValor As Double
Dim sTexto As String
[ô]
sTexto = LstVdas.ListIndex
dValor = CDbl(Trim(Split(sTexto, [Ô]R$[Ô])(1)))
[ô]
Stop
End Sub
[ô]subscript out of range
Valeu amigos.
Veja o que ocorre fazendo dessa forma...
Function RetirarNumero(Texto As String)
Dim Num as Integer
Dim X As Long
Dim Numero As String
For X = 1 To Len(Texto)
Numero = Mid(Texto, X, 1)
If IsNumeric(Numero) = True Then
Num = Num & Numero
End If
Numero = [Ô][Ô]
Next
Return Num
End Function
Private Sub lvBAlt_Click()
TxtTlMsa = Format(Val(TxtTlMsa) - RetirarNumero(Val(LstVdas.List(LstVdas.ListIndex))), [Ô]0.00[Ô])
End Sub
Function RetirarNumero(Texto As String)
Dim Num as Integer
Dim X As Long
Dim Numero As String
For X = 1 To Len(Texto)
Numero = Mid(Texto, X, 1)
If IsNumeric(Numero) = True Then
Num = Num & Numero
End If
Numero = [Ô][Ô]
Next
Return Num
End Function
Private Sub lvBAlt_Click()
TxtTlMsa = Format(Val(TxtTlMsa) - RetirarNumero(Val(LstVdas.List(LstVdas.ListIndex))), [Ô]0.00[Ô])
End Sub
JONATHANSTECKER, ocorre um erro na linha abaixo veja:
Function RetirarNumero(Texto As String)
Dim Num As Integer
Dim X As Long
Dim Numero As String
For X = 1 To Len(Texto)
Numero = Mid(Texto, X, 1)
If IsNumeric(Numero) = True Then
Num = Num & Numero
End If
Numero = [Ô][Ô]
Next
Return Num [ô]Aqui o vb6 nao entende
End Function
Aqui ele retorna zero:
Private Sub lvBAlt_Click()
TxtTlMsa = Format(Val(TxtTlMsa) - RetirarNumero(Val(LstVdas.List(LstVdas.ListIndex))), [Ô]0.00[Ô])
End Sub
Valeu,
Function RetirarNumero(Texto As String)
Dim Num As Integer
Dim X As Long
Dim Numero As String
For X = 1 To Len(Texto)
Numero = Mid(Texto, X, 1)
If IsNumeric(Numero) = True Then
Num = Num & Numero
End If
Numero = [Ô][Ô]
Next
Return Num [ô]Aqui o vb6 nao entende
End Function
Aqui ele retorna zero:
Private Sub lvBAlt_Click()
TxtTlMsa = Format(Val(TxtTlMsa) - RetirarNumero(Val(LstVdas.List(LstVdas.ListIndex))), [Ô]0.00[Ô])
End Sub
Valeu,

vamos lá primeiro deve separar o produto do preço usando o split da forma abaixo
Bom o código acima é totalmente funcional e simples
ele parece complicado por causa dos comentários
mas se retira-los, só o código é minusculo.
Boa Sorte
Private Sub lvBAlt_Click()
[ô]vc preenche o listbox colocando o nome do produto e o valor,
[ô]estes dois são separados por vbTAB
[ô]então criarei uma array com os dois separados e usarei apenas o valor
Dim Valor() As String
Valor = Split(lstVdas.List(lstVdas.ListIndex), vbTab)
[ô]acima criei uma array com o nome e o valor separado
[ô]exemplo: Valor(0) = [Ô]Picanha[Ô]
[ô] Valor(1) = [Ô]R$ 3,40[Ô]
[ô]Somente agora poderei fazer um calculo em cima de Valor(1)
txtTIMsa = CCur(txtTIMsa) - CCur(Valor(1))
txtTIMsa = Format(txtTIMsa, [Ô]currency[Ô])
With LstVdas
.RemoveItem (.ListIndex)
End With
End Sub
Bom o código acima é totalmente funcional e simples
ele parece complicado por causa dos comentários
mas se retira-los, só o código é minusculo.
Boa Sorte
Caros colegas e amigos, LLAIA, JONATHANSTERCKER, ASHKATCHUP, MARCELO-TREZE, fico muito grato pela forca
de voces, valeu.
ASHKATCHUP, era isso mesmo -A função [Ô]SPLIT[Ô] transforma um texto em um vetor. Fiquei muito tempo
tentando achar uma solucao e nao consegui nada, pois nao tenho muita habilidade usando esta funcao.
Agora tenho mais um estudo para mim usando o [Ô]SPLIT[Ô].
Marcelo amigo e posso dizer meu professor, pois cara, vc matou a charada, esta funcionando perfeitamente como eu esperava,
valeu, valeu VbMania.
de voces, valeu.
ASHKATCHUP, era isso mesmo -A função [Ô]SPLIT[Ô] transforma um texto em um vetor. Fiquei muito tempo
tentando achar uma solucao e nao consegui nada, pois nao tenho muita habilidade usando esta funcao.
Agora tenho mais um estudo para mim usando o [Ô]SPLIT[Ô].
Marcelo amigo e posso dizer meu professor, pois cara, vc matou a charada, esta funcionando perfeitamente como eu esperava,
valeu, valeu VbMania.

Tópico encerrado , respostas não são mais permitidas