Foros | Webinarios | Blogs
 

PROBLEMA CON EL FORMAT CURRENCY VISUAL BASIC

Seguir
ESTOY HACIENDO UNA MACRO PARA PUNTO DE VENTA, CUANDO UTILIZO EL FORMATO CURRENCY LOS DATOS QUE ME GUARDA NO SON EN MILES SINO EN DECIMALES, PROBE QUITADNO ESE FORMATO Y AUNQUE EN LA MACRO NO ME PONE EL SIGNO PESO, CUANDO GUARDA LA INFORMACION SE GUARDA CON SIGNO PESO Y CON LAS CANTIDADDES EXACTA DE LA OPERACION. ESTE ES EL MODELO:

'
Private Sub CommandButton1_Click()
'Registrar producto y capturar cantidad
'Declaramos variables
Dim strDescripcion As String
Dim intCantidad As Long
Dim intPrecio As Long
Dim doublePUnitario As Integer
Dim intTotal As Double
'
'En caso de error
On Error GoTo ErrorHandler
'
With Application.WorksheetFunction
'
'Usamos BUSCARV para encontrar el detalle del producto
'
strDescripcion = .VLookup(CDbl(Me.TextBox1.Value), PRODUCTOS.Range("A:C"), 2, 0)
'
intCantidad = InputBox(strDescripcion & vbNewLine & vbNewLine & "Ingresa la cantidad.", "Cantidad", 1)
intPrecio = InputBox(strDescripcion & vbNewLine & vbNewLine & "Ingresa el precio.", "Precio", 1)
'
If intCantidad = 0 Then GoTo ErrorHandler
If intPrecio = 0 Then GoTo ErrorHandler
'
'Llenamos el ListBox
'...CÓDIGO
Me.ListBox1.AddItem Me.TextBox1.Value
'
'...DESCRIPCIÓN
ListBox1.List(ListBox1.ListCount - 1, 1) = strDescripcion

'
'...CANTIDAD
ListBox1.List(ListBox1.ListCount - 1, 2) = Format(intCantidad, "General Number")
'
'...P.UNITARIO
ListBox1.List(ListBox1.ListCount - 1, 3) = Format((intPrecio), "Currency")
'
'...TOTAL
intTotal = intPrecio * intCantidad
ListBox1.List(ListBox1.ListCount - 1, 4) = Format((intTotal), "Currency")
'
'...ETIQUETAS
Me.lblProductos = Format(CLng(Me.lblProductos) + intCantidad, "General Number")
Me.lblTotal = Format(CDbl(Me.lblTotal) + CDbl(intTotal), "Currency")
'
Me.TextBox1.Value = ""
Me.TextBox1.SetFocus
'
End With
'
Exit Sub
'
ErrorHandler:
'
MsgBox "Ha ocurrido un error: " & Err.Description, vbExclamation, "EXCELeINFO"
'
Me.TextBox1.Value = ""
Me.TextBox1.SetFocus
'
End Sub
'


Private Sub CommandButton4_Click()
Unload Me
End Sub
'
Private Sub CommandButton5_Click()
'Guardar compra en tabla
Dim i As Variant
Dim j As Variant
Dim TransRowRng As Range
Dim NewRow As Integer
'
With VENTAS
'
For i = Me.ListBox1.ListCount To 1 Step -1
'
Set TransRowRng = ThisWorkbook.Worksheets("VENTAS").Cells(1, 1).CurrentRegion
NewRow = TransRowRng.Rows.Count + 1
.Cells(NewRow, 1).Value = Date
.Cells(NewRow, 2).Value = Me.txtConsec.Value
'
For j = 0 To 4
'
.Cells(NewRow, j + 3).Value = Me.ListBox1.List(Me.ListBox1.ListCount - i, j)
'
Next j
'
Next i
'
End With
'
MsgBox "Registros guardados con éxito.", vbInformation, "EXCELeINFO"
'
Unload Me
'
End Sub


Private Sub CommandButton6_Click()
'Eliminar producto capturado erroneamente.
'
'Declaramos variables
Dim Cuenta As Integer
Dim Numero As Integer
Dim j As Integer
Dim i As Integer
Dim strNombreItem As String
Dim CantidadSeleccionado As String
Dim TotalSeleccionado As Double

'
Cuenta = Me.ListBox1.ListCount
Numero = 0
'
'Validamos que haya un elemento seleccionado.
For j = 0 To Cuenta - 1
If Me.ListBox1.Selected(j) = True Then
Numero = Numero + 1
End If
Next j
'
If Numero <> 0 Then
'
'La hoja seleccionada se pasará al ListBox de hojas visibles.
For i = 0 To Cuenta - 1
If Me.ListBox1.Selected(i) = True Then
strNombreItem = Me.ListBox1.List(i)
CantidadSeleccionado = ListBox1.List(i, 2)
TotalSeleccionado = ListBox1.List(i, 4)
Me.ListBox1.RemoveItem i
Me.lblProductos.Caption = Format(Me.lblProductos.Caption - CantidadSeleccionado, "Standard")
Me.lblTotal.Caption = Format(Me.lblTotal.Caption - TotalSeleccionado, "Currency")
End If
Next i
'
End If
'
End Sub

Private Sub Frame1_Click()

End Sub

'
Private Sub UserForm_Initialize()
Dim intConsecutivo As String
'
Me.ListBox1.ColumnCount = 5
Me.ListBox1.ColumnWidths = "70 pt; 150 pt; 55 pt; 60 pt; 60 pt"
Me.txtFecha.Value = Date
'
intConsecutivo = VENTAS.Range("I1").Value
'
If intConsecutivo = "CONSECUTIVO" Then
'
Me.txtConsec = 1
'
Else
'
Me.txtConsec = intConsecutivo + 1
'
End If
End Sub

POR FAVOR!!! AYUDA URGENTE


  • hace 1 mes

    Avatar de ATILIO MIGUEL

    Yo utilizo en VB 6.0 no sé si te funcionará a vos pero pongo así. Cdbl(text1). En este caso no se utiliza currency. Otra opción creo q podría ser formatnumber(text1, 2). Espero te sirva. Comenta cómo te fue.

1 Solución propuesta

Otra cosa que se me ocurre es ejemplo. Text1="$" & formatnumber(text1,2) así te separa mil con dos decimales.