A la espera de su ayuda, voy haciendo pruebas. Creo que estoy cerca, pero no consigo hacerlo funcionar.
Este es el form desde donde añado articulos al listbox del form compras (con su ayuda DANTE)
Este es el codigo que tengo en el form "FACTURAR ARTICULO"
Private Sub cbx_nombre_Change()
Dim Fila As Long
Dim Final As Long
Me.cbx_nombre.BackColor = &H80000005
If cbx_nombre.Text = "" Then
limpiar_controles
End If
Final = GetUltimoR(Hoja2)
For Fila = 2 To Final
If cbx_nombre.Text = Hoja2.Cells(Fila, 2) Then
Me.txt_codigo = Hoja2.Cells(Fila, 1)
Me.txt_codigo.Text = Format(Me.txt_codigo, "00000")
Me.txt_compra = Hoja2.Cells(Fila, 4)
Me.txt_stock_inicial = Hoja2.Cells(Fila, 6)
txt_compra = Format(txt_compra, "currency")
Exit For
End If
Next
ruta = ThisWorkbook.Path & "\imagenes\"
arch = cbx_nombre.Text & ".jpg"
If Dir(ruta & arch) <> "" Then
img_articulo_buscar.Picture = LoadPicture(ruta & arch)
img_articulo_buscar.PictureSizeMode = fmPictureSizeModeStretch
Else
If Dir(ruta & "00000.jpg") <> "" Then
img_articulo_buscar.Picture = LoadPicture(ruta & "00000.jpg")
End If
End If
End Sub
Private Sub cbx_nombre_Enter()
Dim Fila As Long
Dim Final As Long
Dim Lista As String
For Fila = 1 To cbx_nombre.ListCount
cbx_nombre.RemoveItem 0
Next Fila
Final = GetUltimoR(Hoja2)
For Fila = 2 To Final
Lista = Hoja2.Cells(Fila, 2)
cbx_nombre.AddItem (Lista)
Next
End Sub
Sub limpiar_controles()
cbx_nombre.Value = ""
txt_codigo.Value = ""
txt_compra.Value = ""
txt_stock_inicial = ""
txt_cantidad.Value = ""
txt_importe.Value = ""
txt_stock_final = ""
End Sub
Private Sub cmb_aceptar_Click()
If txt_cantidad.Value = "" Then
MsgBox "Debes ingresar una cantidad.", vbInformation, "fjpg GAMES"
txt_cantidad.SetFocus
txt_importe = ""
Exit Sub
End If
'agregar el artículo al listbox de fr_salidas_ventas
If cbx_nombre.ListIndex > -1 Then
With frm_compras.ListBox1
.AddItem cbx_nombre
a = .ListCount - 1
.List(a, 1) = txt_codigo
.List(a, 2) = txt_cantidad
.List(a, 3) = txt_compra
.List(a, 4) = txt_importe
txt_total = Format(txt_total, "currency")
For i = 0 To a
w_txt_total = w_txt_total + CDbl(.List(i, 4))
Next
frm_compras.txt_total = w_txt_total
End With
End If
Call limpiar_controles
End Sub
Private Sub cmb_volver_Click()
Unload Me
End Sub
Private Sub txt_cantidad_Change()
Dim Fila As Long
Dim Final As Long
Dim Registro As Long
Dim totImporte As Currency
Dim vPrecio_compra As Currency
If txt_cantidad.Value = "" Then
txt_importe = ""
txt_stock_final = ""
Exit Sub
End If
If txt_cantidad = "" Then Exit Sub 'esta es para que no ejecute el resto cuando limpias los controles
vcompra = Me.txt_compra.Value
'Determino el final del listdo de existencias
Final = GetUltimoR(Hoja2)
'Compruebo que el código ingresado en el ComboBox, coincida en hoja de existencias
' para realizar la respectiva operación aritmética
For Registro = 1 To Final
If cbx_nombre.Text = Hoja2.Cells(Registro, 1) Then
Exit For
End If
Next
totImporte = Val(Me.txt_cantidad) * vcompra
Me.txt_importe.Value = FormatNumber(totImporte, 2)
txt_importe = Format(txt_importe, "currency")
txt_stock_final = Val(Me.txt_stock_inicial) + Val(Me.txt_cantidad)
End Sub
Private Sub UserForm_Initialize()
txt_importe = Format(txt_importe, "currency")
End Sub
Necesitaria añadir al form "FACTURAR ARTICULO" estas lineas de codigo??
Public Fila
Dim h
Private Sub cmb_aceptar_Click()
'Por.Dante Amor
If Fila > 0 Then
h.Cells(Fila, "f") = txt_stock_final.Value
End If
End Sub
Private Sub UserForm_Click()
'Por.Dante Amor
Set h = Sheets("ARTICULOS")
If Fila > 0 Then
txt_stock_inicial.Value = h.Cells(Fila, "F")
End If
End Sub
Alguna