• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

Revisión macro

Buenos días a todos;
-Tengo una macro que guarda registro en una tabla y el "For" estaba limitado hasta la fila "50" en dos tablas, (Entradas y Existencias) y al llegar a este registro no me dejaba continuar. He cambiado el "For" de la macro y he establecido dos variables final (final y final2). He estado trabajando con ella y realmente no le he visto errores.
-Inserto código por si le podéis echar un vistazo y decirme si en algo me he equivocado. Me pareció demasiado fácil para mí de ahí mis dudas.
Gracias de antemano como siempre por vuestra colaboración.
Código:
Option Explicit
Dim ArchivoIMG As String
Dim NombreArchivo As String
Dim ahora As Double
'añadidas ------------------------
Dim final As Integer, final2 As Integer

Private Sub btn_BuscarArticulo_Click()
frm_BuscarArticulo.Show
cbx_Barras = BuscarArticulo
End Sub

Private Sub btn_Cerrar_Click()
Unload Me
End Sub

Private Sub btn_Fecha_Click()
txt_Fecha = Empty

  Set cal_UF.tb = txt_Fecha
  cal_UF.Show
End Sub

Private Sub btn_Registrar_Click()
If Me.txt_Lote = "" Then
    MsgBox "Lote es un campo requerido", vbExclamation, "Control de Almacen"
    Me.txt_Lote.SetFocus
    Me.txt_Lote.BackColor = &HC0C0FF
    Exit Sub
End If
If Me.txt_Cantidad = "" Then
    MsgBox "CANTIDAD, es un campo requerido", vbExclamation, "Control de Almacen"
    Me.txt_Cantidad.SetFocus
    Me.txt_Cantidad.BackColor = &HC0C0FF
    Exit Sub
End If

Dim fila As Integer
'Dim final As Integer
Dim Existencia As Integer
Dim Total As Integer
Dim Comprb As Long

'nºregistro------------------------------------------
Hoja5.Range("A3").Value = Hoja5.Range("A3").Value + 1
Comprb = Hoja5.Range("A3").Value

    'For fila = 3 To 50
    For fila = 3 To final
        If Hoja2.Cells(fila, 1) = "" Then
            final = fila
            Exit For
        End If
    Next
        Hoja2.Cells(final, 1) = Comprb
        Hoja2.Cells(final, 2) = Val(Me.cbx_Barras)
        Hoja2.Cells(final, 3) = Me.txt_Codigo
        Hoja2.Cells(final, 4) = Me.txt_Fecha
        Hoja2.Cells(final, 5) = "TR522" & Me.txt_Albarán
        Hoja2.Cells(final, 6) = Val(Me.txt_Proveedor)
        Hoja2.Cells(final, 7) = Val(Me.txt_Cantidad)
        Hoja2.Cells(final, 8) = Val(Me.txt_Cantidad) 'lote disponible
        Hoja2.Cells(final, 13) = Me.txt_Notas
        Hoja2.Cells(final, 11) = Acceso.Range("B2") 'usuario
        Hoja2.Cells(final, 12) = Hoja6.Range("E3") 'Delegación
        Hoja2.Cells(final, 9) = Val(Me.txt_Lote)
        Hoja2.Cells(final, 10) = Val(Me.txt_Caducidad)

    'For fila = 3 To 50
    For fila = 3 To final2
        If Hoja4.Cells(fila, 1) = Hoja2.Cells(final, 2) Then
            Existencia = Hoja4.Cells(fila, 6)
            Total = Me.txt_Cantidad + Existencia
            Hoja4.Cells(fila, 6) = Total
            Exit For
        End If
        
    Next
        Me.cbx_Barras = ""
        Me.txt_Codigo = ""
        Me.txt_Descripcion = ""
        Me.txt_Tamaño = ""
        Me.txt_Fecha = ""
        Me.txt_Albarán = ""
        Me.txt_Proveedor = ""
        Me.txt_Cantidad = ""
        Me.txt_Lote = ""
        Me.txt_Caducidad = ""
        Me.txt_Saldo = ""
        Me.txt_Notas = ""
        Me.txt_Color = ""
        Me.txt_Existencia = ""
End Sub

Private Sub cbx_Barras_Change()
Dim imgEncontrada As Boolean
Dim fila As Long
'Dim final As Long

Me.txt_Fecha = Date

Me.cbx_Barras.BackColor = &HC0FFFF

Me.ImagenArticulo.Picture = LoadPicture("") 'Quita la imagen cargada anteriormente
On Error GoTo SinFoto

If cbx_Barras.Value = "" Then
'LimpiarControles
txt_Codigo = Empty: txt_Descripcion = Empty: txt_Tamaño = Empty
txt_Color = Empty: txt_Existencia = Empty: txt_RutaImagen = Empty

End If

    For fila = 3 To final
        If Hoja1.Cells(fila, 1) = "" And Hoja4.Cells(fila, 1) = "" Then
            final = fila - 1
        End If
    Next
    
'final = GetUltimoR(Hoja1)

    For fila = 3 To final
        If cbx_Barras.Text = Hoja1.Cells(fila, 1) Then
            Me.txt_Codigo = Hoja1.Cells(fila, 2)
            Me.txt_Descripcion = Hoja1.Cells(fila, 3)
            Me.txt_Tamaño = Hoja1.Cells(fila, 4)
            Me.txt_Color = Hoja1.Cells(fila, 5)
            txt_RutaImagen = Hoja1.Cells(fila, 6)
            Exit For
        End If
    Next
    'For fila = 3 To final
    For fila = 3 To final2
        If cbx_Barras.Text = Hoja4.Cells(fila, 1) Then
        Me.txt_Existencia = Hoja4.Cells(fila, 6)
        Exit For
        End If
    Next
    
If txt_RutaImagen = "" Then
ImagenArticulo.Picture = LoadPicture(ActiveWorkbook.Path & "\imágenes\" & Hoja6.Range("F3") & ".jpg")
End If
    
    ImagenArticulo.Picture = LoadPicture(ActiveWorkbook.Path & "\imágenes\" & Me.txt_RutaImagen)
SinFoto:
If Err = 53 Then
    ImagenArticulo.Picture = LoadPicture(ActiveWorkbook.Path & "\imágenes\" & Hoja6.Range("F3") & ".jpg")
End If
txt_Albarán.SetFocus
End Sub
Private Sub cbx_Barras_Enter()
Dim fila As Long
'Dim final As Long
Dim Lista As String

For fila = 1 To cbx_Barras.ListCount
    cbx_Barras.RemoveItem 0
Next fila


    'For fila = 3 To 50
    For fila = 3 To final
        If Hoja1.Cells(fila, 1) = "" Then
            final = fila - 1
            Exit For
        End If
    Next
    
    For fila = 3 To final
        Lista = Hoja1.Cells(fila, 1)
        cbx_Barras.AddItem (Lista)
    Next
    
End Sub

Private Sub txt_Cantidad_Change()
Dim fila As Integer
'Dim final As Integer
Dim Registro As Integer
Dim antes As Integer
Dim saldo As Double

    'For fila = 3 To 50
    For fila = 3 To final2
        If Hoja4.Cells(fila, 1) = "" Then
            final = fila
            Exit For
        End If
    Next

    For Registro = 1 To final
        If Val(cbx_Barras) = Hoja4.Cells(Registro, 1) Then
            antes = Hoja4.Cells(Registro, 6)
            ahora = Val(Me.txt_Cantidad)
                
                saldo = antes + ahora
                Me.txt_Saldo = saldo
            Exit For
        End If
    Next
End Sub

Private Sub UserForm_Activate()
Me.txt_Fecha = Date
End Sub

Private Sub UserForm_Initialize()
'Añadido------------------
final2 = GetUltimoR(Hoja4)
final = GetUltimoR(Hoja1)
'-------------------------
Dim c As Range
With Hoja8
  For Each c In .Range(.[a2].End(xlDown), .[A3])
    If UCase(c.Range("C1")) <> "NO" Then
      txt_Proveedor.AddItem c
      txt_Proveedor.List(txt_Proveedor.ListCount - 1, 1) = c.Range("B1")
    End If
  Next
End With
End Sub
 
Te recomienda subas un archivo de muestra, ello facilitara que alguien pueda ayudarte.
Buenas tardes Dante, primero gracias por responder, Adjunto macro sin corregir.
Formulario, "frm_Entradas"
Lo que estaba intentando conseguir es que el cliclo "for" que esta limitado a 50 cambiarlo para que no se limite y pueda seguir agregando registros.
Muchísimas gracias y buenas tardes.
 

Adjuntos

Antoni

Well-known member
El problema que tienes, es la forma en que determinas la última fila de datos y como buscas los valores en las hojas.
Sin el archivo, tal como te comenta Dantte666, es complicado. Te dejo adaptado uno de los procedimientos.
Código:
Private Sub btn_Registrar_Click()
'--
Dim Fila As Long
Dim Existencia As Integer
Dim Total As Integer
Dim Comprb As Long
Dim Producto As Range
'--
If Me.txt_Lote = "" Then
    MsgBox "Lote es un campo requerido", vbExclamation, "Control de Almacen"
    Me.txt_Lote.SetFocus
    Me.txt_Lote.BackColor = &HC0C0FF
    Exit Sub
End If
If Me.txt_Cantidad = "" Then
    MsgBox "CANTIDAD, es un campo requerido", vbExclamation, "Control de Almacen"
    Me.txt_Cantidad.SetFocus
    Me.txt_Cantidad.BackColor = &HC0C0FF
    Exit Sub
End If
'--
Hoja5.Range("A3").Value = Hoja5.Range("A3").Value + 1
Comprb = Hoja5.Range("A3").Value
Fila = Range("A" & Rows.Count).End(xlUp).Row + 1 '<---------------
Hoja2.Cells(Fila, 1) = Comprb
Hoja2.Cells(Fila, 2) = Val(Me.cbx_Barras)
Hoja2.Cells(Fila, 3) = Me.txt_Codigo
Hoja2.Cells(Fila, 4) = Me.txt_Fecha
Hoja2.Cells(Fila, 5) = "TR522" & Me.txt_Albarán
Hoja2.Cells(Fila, 6) = Val(Me.txt_Proveedor)
Hoja2.Cells(Fila, 7) = Val(Me.txt_Cantidad)
Hoja2.Cells(Fila, 8) = Val(Me.txt_Cantidad) 'lote disponible
Hoja2.Cells(Fila, 13) = Me.txt_Notas
Hoja2.Cells(Fila, 11) = Acceso.Range("B2") 'usuario
Hoja2.Cells(Fila, 12) = Hoja6.Range("E3") 'Delegación
Hoja2.Cells(Fila, 9) = Val(Me.txt_Lote)
Hoja2.Cells(Fila, 10) = Val(Me.txt_Caducidad)
Set Producto = Hoja4.Range("A").Find(Hoja2.Cells(Fila, 2), , , xlWhole)
If Not Producto Is Nothing Then
   Existencia = Hoja4.Cells(Producto.Row, 6)
   Total = Me.txt_Cantidad + Existencia
   Hoja4.Cells(Producto.Row, 6) = Total
End If
'--
Me.cbx_Barras = ""
Me.txt_Codigo = ""
Me.txt_Descripcion = ""
Me.txt_Tamaño = ""
Me.txt_Fecha = ""
Me.txt_Albarán = ""
Me.txt_Proveedor = ""
Me.txt_Cantidad = ""
Me.txt_Lote = ""
Me.txt_Caducidad = ""
Me.txt_Saldo = ""
Me.txt_Notas = ""
Me.txt_Color = ""
Me.txt_Existencia = ""
End Sub
 

nito1972

Member
El problema que tienes, es la forma en que determinas la última fila de datos y como buscas los valores en las hojas.
Sin el archivo, tal como te comenta Dantte666, es complicado. Te dejo adaptado uno de los procedimientos.
Código:
Private Sub btn_Registrar_Click()
'--
Dim Fila As Long
Dim Existencia As Integer
Dim Total As Integer
Dim Comprb As Long
Dim Producto As Range
'--
If Me.txt_Lote = "" Then
    MsgBox "Lote es un campo requerido", vbExclamation, "Control de Almacen"
    Me.txt_Lote.SetFocus
    Me.txt_Lote.BackColor = &HC0C0FF
    Exit Sub
End If
If Me.txt_Cantidad = "" Then
    MsgBox "CANTIDAD, es un campo requerido", vbExclamation, "Control de Almacen"
    Me.txt_Cantidad.SetFocus
    Me.txt_Cantidad.BackColor = &HC0C0FF
    Exit Sub
End If
'--
Hoja5.Range("A3").Value = Hoja5.Range("A3").Value + 1
Comprb = Hoja5.Range("A3").Value
Fila = Range("A" & Rows.Count).End(xlUp).Row + 1 '<---------------
Hoja2.Cells(Fila, 1) = Comprb
Hoja2.Cells(Fila, 2) = Val(Me.cbx_Barras)
Hoja2.Cells(Fila, 3) = Me.txt_Codigo
Hoja2.Cells(Fila, 4) = Me.txt_Fecha
Hoja2.Cells(Fila, 5) = "TR522" & Me.txt_Albarán
Hoja2.Cells(Fila, 6) = Val(Me.txt_Proveedor)
Hoja2.Cells(Fila, 7) = Val(Me.txt_Cantidad)
Hoja2.Cells(Fila, 8) = Val(Me.txt_Cantidad) 'lote disponible
Hoja2.Cells(Fila, 13) = Me.txt_Notas
Hoja2.Cells(Fila, 11) = Acceso.Range("B2") 'usuario
Hoja2.Cells(Fila, 12) = Hoja6.Range("E3") 'Delegación
Hoja2.Cells(Fila, 9) = Val(Me.txt_Lote)
Hoja2.Cells(Fila, 10) = Val(Me.txt_Caducidad)
Set Producto = Hoja4.Range("A").Find(Hoja2.Cells(Fila, 2), , , xlWhole)
If Not Producto Is Nothing Then
   Existencia = Hoja4.Cells(Producto.Row, 6)
   Total = Me.txt_Cantidad + Existencia
   Hoja4.Cells(Producto.Row, 6) = Total
End If
'--
Me.cbx_Barras = ""
Me.txt_Codigo = ""
Me.txt_Descripcion = ""
Me.txt_Tamaño = ""
Me.txt_Fecha = ""
Me.txt_Albarán = ""
Me.txt_Proveedor = ""
Me.txt_Cantidad = ""
Me.txt_Lote = ""
Me.txt_Caducidad = ""
Me.txt_Saldo = ""
Me.txt_Notas = ""
Me.txt_Color = ""
Me.txt_Existencia = ""
End Sub
Hola Antoni, gracias a ti también por responder. Subí la macro al poco de tú haber contestado. No obstante probaré lo que ya me has avanzado y le contestaré. Un abrazo paisano.
 
Hola Antoni, gracias a ti también por responder. Subí la macro al poco de tú haber contestado. No obstante probaré lo que ya me has avanzado y le contestaré. Un abrazo paisano.
Bo Antoni, he corrido la macro y me arroja un error "Error en el método Range del objeto "worksheet"
Subo la macro 080720 que es la mas actual. En el frm_Entradas hay varios ciclos "For" to 50. Lo que me gustaría conseguir es evitar dicha limitacion. Puedo cambiar a 51-52-52, etc pero siempre tendría que hacerlo manualmente. Lo he intentado pero algunas cosas me iban bien pero me daba error en otras. Si no me explico con claridad me comentas.
Un abrazo maestro.
 

Adjuntos

Antoni

Well-known member
He modificado la forma de obtener el Id en las Entradas, actualización de existencias y la función GetUltimoR.
Ves pensando en unificar las hojas Productos y Existencias, a la larga y tal como lo tienes, no hará más que traerte problemas.
 

Adjuntos

He modificado la forma de obtener el Id en las Entradas, actualización de existencias y la función GetUltimoR.
Ves pensando en unificar las hojas Productos y Existencias, a la larga y tal como lo tienes, no hará más que traerte problemas.
Buen día y Gracias Antoni, la macro bien. Repensaré lo que me comentas. Por lo que entiendo dices añadir a la hoja productos el campo saldo. Me gusta la idea. Voy intentar hacer la unificación y si me surge alguna duda te digo. Un abrazo
 
He modificado la forma de obtener el Id en las Entradas, actualización de existencias y la función GetUltimoR.
Ves pensando en unificar las hojas Productos y Existencias, a la larga y tal como lo tienes, no hará más que traerte problemas.
Buenos días Antoni, he subido la macro modificada como bien me indicas donde te planteo algunas dudas. Un abrazo paisano.
 

Adjuntos

Antoni

Well-known member
Tienes un lío de 1000 pares de ......... con el tema de la modificación de entradas y la búsqueda de productos.
Déjame un par de días a ver si lo reorganizamos todo un poco.
 
Tienes un lío de 1000 pares de ......... con el tema de la modificación de entradas y la búsqueda de productos.
Déjame un par de días a ver si lo reorganizamos todo un poco.
Muchas Gracias Antoni, cuando puedas. Yo mientras tanto iré viendo si encuentro algo. Te lo agradezco.
 

Antoni

Well-known member
No me he olvidado de ti, pero ando un poco liado esta semana, a ver si durante el fin de semana tengo un hueco.
 

Antoni

Well-known member
Con un poco de retraso, pero aquí estamos.
He reestructurado un poquito los formularios de Entradas Y Búsqueda de productos.
Desde un vista funcional, se restringen las funciones de Eliminar y Modificar a aquellas entradas en que la cantidad y el saldo coinciden, esto garantiza que no hay salidas que afecten a esas entradas.
Revisa a fondo todas las funciones. :) 😷
 

Adjuntos

Con un poco de retraso, pero aquí estamos.
He reestructurado un poquito los formularios de Entradas Y Búsqueda de productos.
Desde un vista funcional, se restringen las funciones de Eliminar y Modificar a aquellas entradas en que la cantidad y el saldo coinciden, esto garantiza que no hay salidas que afecten a esas entradas.
Revisa a fondo todas las funciones. :) 😷
Hola Antoni, disculpa por tardar en contestarte. Aún estoy probando y he flipado como la has corregido. Sólo una cosita comentar y es lo siguiente:
Si elimino todos los registros de la hoja entradas y genero uno nuevo pues dicha entrada la coloca en la fila 4 y no en la 3 saltandose la "tbl_Entradas".
He añadido el siguiente código y así me va bien no sé si es el correcto, (lo ves donde empieza '<<< >>>, tú me comentarás:
Código:
Private Sub Añadir_Click()
Dim fila As Integer
Dim Final As Integer
Dim Existencia As Integer
Dim Total As Integer
Dim Comprb As Long
Dim Producto As Range
Dim Incidencia As String

Incidencia = lbl_Reg & txt_Albarán

If txt_Lote = "" Then
    MsgBox "Lote es un campo requerido", vbExclamation, "Control de Almacen"
    txt_Lote.SetFocus
    txt_Lote.BackColor = &HC0C0FF
    Exit Sub
End If
If txt_Cantidad = "" Then
    MsgBox "CANTIDAD, es un campo requerido", vbExclamation, "Control de Almacen"
    txt_Cantidad.SetFocus
    txt_Cantidad.BackColor = &HC0C0FF
    Exit Sub
End If

'Nº de Registro
Comprb = WorksheetFunction.Max(Hoja3.Columns("A")) + 1 '<-------------------
'<<<<<añadido para que no salte a la fila 4 al generar el primer registro>>>>
Final = GetNuevoR(Hoja3)
    For fila = 3 To Final
    If Hoja3.Cells(fila, 1) = "" Then
    Final = fila
    Exit For
    End If
    Next
'<<<<<-------------------------------------------------------------------->>>>
'-- Registrar entrada
If Modificar.Visible = True Then
   Final = ListBox1.List(ListBox1.ListIndex, 14)
Else
   'Final = GetNuevoR(Hoja3) '<-------------------
End If
Hoja3.Cells(Final, 1) = Comprb
Hoja3.Cells(Final, 2) = Val(cbx_Barras)
Hoja3.Cells(Final, 3) = txt_Codigo
Hoja3.Cells(Final, 4) = txt_Fecha 'CDate(txt_Fecha)
'Hoja3.Cells(Final, 5) = "TR522" & txt_Albarán 'pasa por IF
Hoja3.Cells(Final, 6) = Val(txt_Proveedor)
Hoja3.Cells(Final, 7) = CDbl((txt_Cantidad))
Hoja3.Cells(Final, 8) = CDbl(txt_Cantidad) 'lote disponible
Hoja3.Cells(Final, 13) = txt_Notas
Hoja3.Cells(Final, 11) = Hoja6.Range("B3") 'usuario
Hoja3.Cells(Final, 12) = Hoja6.Range("E3") 'Delegación
Hoja3.Cells(Final, 9) = Val(txt_Lote)
Hoja3.Cells(Final, 10) = Val(txt_Caducidad)

'----Activar o desactivar incidendia------------------
    If Check_Incidencia = True Then
        Hoja3.Cells(Final, 14) = "Sí"
        Hoja3.Cells(Final, 5) = lbl_Reg & txt_Albarán
        MsgBox "Se ha generado una incidencia con el nº: " & Incidencia, , "Incidencia"
    Else
        Hoja3.Cells(Final, 14) = "No"
        Hoja3.Cells(Final, 5) = "TR522" & txt_Albarán
    End If

'-- Actualizar existencia
Set Producto = Hoja2.Columns("A").Find(cbx_Barras, , , xlWhole)
If Not Producto Is Nothing Then
   Hoja2.Cells(Producto.Row, 9) = CDbl(txt_Saldo)
End If

'--Limpiar controles
Nuevo_Click

cbx_Barras.SetFocus
btn_Fecha.Visible = False

End Sub

P.D. Ahora ya puedo eliminar "Registrar incidencia", lo comento ya que no lo has eliminado y ahora no tiene funcionalidad, ¿no?.
Por lo demás estoy probando y creo que muy bien, si me surge alguna duda te pregunto.
Muchas, muchas Antoni, por cierto lo bueno siempre se hace esperar. Espero devolverte el favor algún día.
 
Última edición:
Hola Antoni, disculpa por tardar en contestarte. Aún estoy probando y he flipado como la has corregido. Sólo una cosita comentar y es lo siguiente:
Si elimino todos los registros de la hoja entradas y genero uno nuevo pues dicha entrada la coloca en la fila 4 y no en la 3 saltandose la "tbl_Entradas".
He añadido el siguiente código y así me va bien no sé si es el correcto, (lo ves donde empieza '<<< >>>, tú me comentarás:
Código:
Private Sub Añadir_Click()
Dim fila As Integer
Dim Final As Integer
Dim Existencia As Integer
Dim Total As Integer
Dim Comprb As Long
Dim Producto As Range
Dim Incidencia As String

Incidencia = lbl_Reg & txt_Albarán

If txt_Lote = "" Then
    MsgBox "Lote es un campo requerido", vbExclamation, "Control de Almacen"
    txt_Lote.SetFocus
    txt_Lote.BackColor = &HC0C0FF
    Exit Sub
End If
If txt_Cantidad = "" Then
    MsgBox "CANTIDAD, es un campo requerido", vbExclamation, "Control de Almacen"
    txt_Cantidad.SetFocus
    txt_Cantidad.BackColor = &HC0C0FF
    Exit Sub
End If

'Nº de Registro
Comprb = WorksheetFunction.Max(Hoja3.Columns("A")) + 1 '<-------------------
'<<<<<añadido para que no salte a la fila 4 al generar el primer registro>>>>
Final = GetNuevoR(Hoja3)
    For fila = 3 To Final
    If Hoja3.Cells(fila, 1) = "" Then
    Final = fila
    Exit For
    End If
    Next
'<<<<<-------------------------------------------------------------------->>>>
'-- Registrar entrada
If Modificar.Visible = True Then
   Final = ListBox1.List(ListBox1.ListIndex, 14)
Else
   'Final = GetNuevoR(Hoja3) '<-------------------
End If
Hoja3.Cells(Final, 1) = Comprb
Hoja3.Cells(Final, 2) = Val(cbx_Barras)
Hoja3.Cells(Final, 3) = txt_Codigo
Hoja3.Cells(Final, 4) = txt_Fecha 'CDate(txt_Fecha)
'Hoja3.Cells(Final, 5) = "TR522" & txt_Albarán 'pasa por IF
Hoja3.Cells(Final, 6) = Val(txt_Proveedor)
Hoja3.Cells(Final, 7) = CDbl((txt_Cantidad))
Hoja3.Cells(Final, 8) = CDbl(txt_Cantidad) 'lote disponible
Hoja3.Cells(Final, 13) = txt_Notas
Hoja3.Cells(Final, 11) = Hoja6.Range("B3") 'usuario
Hoja3.Cells(Final, 12) = Hoja6.Range("E3") 'Delegación
Hoja3.Cells(Final, 9) = Val(txt_Lote)
Hoja3.Cells(Final, 10) = Val(txt_Caducidad)

'----Activar o desactivar incidendia------------------
    If Check_Incidencia = True Then
        Hoja3.Cells(Final, 14) = "Sí"
        Hoja3.Cells(Final, 5) = lbl_Reg & txt_Albarán
        MsgBox "Se ha generado una incidencia con el nº: " & Incidencia, , "Incidencia"
    Else
        Hoja3.Cells(Final, 14) = "No"
        Hoja3.Cells(Final, 5) = "TR522" & txt_Albarán
    End If

'-- Actualizar existencia
Set Producto = Hoja2.Columns("A").Find(cbx_Barras, , , xlWhole)
If Not Producto Is Nothing Then
   Hoja2.Cells(Producto.Row, 9) = CDbl(txt_Saldo)
End If

'--Limpiar controles
Nuevo_Click

cbx_Barras.SetFocus
btn_Fecha.Visible = False

End Sub

P.D. Ahora ya puedo eliminar "Registrar incidencia", lo comento ya que no lo has eliminado y ahora no tiene funcionalidad, ¿no?.
Por lo demás estoy probando y creo que muy bien, si me surge alguna duda te pregunto.
Muchas, muchas Antoni, por cierto lo bueno siempre se hace esperar. Espero devolverte el favor algún día.
Bo días Antoni;
Continuando con el ejemplo que me has pasado anteriormente he desarrollado algo parecido para el frm_Salidas.
Subo la macro y a ver que le parece. Espero que no me haya equivocado en nada.
Perdóname si he abusado de este hilo.
Un abrazo e bo día.
 

Adjuntos

Arriba