Error 9 subíndice fuera del intervalo

La verdad es que soy nuevo en esto, me dejaron este archivo en el trabajo es un inventario con 3 hojas ninguna se llama STOCK PRODUCTOS lo que se quiere es que al ingresar datos en la primera hoja de ingreso de datos se ingresen los datos automaticamente a la tercera hoja llamada refacciones. Espero me puedan ayudar !

' Insertar procedimiento
Dim I, X, Y As Integer 'TIPO NUMERICO

Public Sub AGREGAR_PRODUCTOS()
Set DATOS = ThisWorkbook.Sheets("INGRESO DE DATOS")
Set STOCK = ThisWorkbook.Sheets("STOCK PRODUCTOS")  -----------Aqui error 

With DATOS 'ALMACENA UN ENTORNO DE METODOS

If .Range("D7") = "" Or .Range("D9").Value = "" Or .Range("i7").Value = "" Or .Range("I9").Value = "" Then
MsgBox "Es necesario ingresar todos los datos", vbInformation, "Atencion"
Exit Sub
End If

For I = 5 To 20000
If STOCK.Cells(I, 2) = .Range("D7").Value Or STOCK.Cells(I, 2) = "" Then
X = I
Exit For
End If
Next
STOCK.Cells(X, 2) = .Range("D7").Value 'ID
STOCK.Cells(X, 3) = .Range("D9").Value 'NOMBRE

If .Range("I9").Value = "ENTRADA" Then
STOCK.Cells(X, 4) = .Range("I7").Value 'ENTRADA
End If

If .Range("I9").Value = "SALIDA" Then
STOCK.Cells(X, 5) = .Range("I7").Value 'SALIDA
End If

STOCK.Cells(X, 6) = Val(STOCK.Cells(X, 4) - STOCK.Cells(X, 5))

If STOCK.Cells(X, 6) > 0 Then
STOCK.Cells(X, 6).Interior.Color = 65535 'Amarillo
Else
STOCK.Cells(X, 6).Interior.Color = 255 'Rojo
End If

MsgBox "Producto Registrado", vbInformation, "EXCELSERVICIOS.COM"
.Range("D7").Value = ""
.Range("I9").Value = ""
.Range("I7").Value = ""
End With

End Sub

1 Respuesta

Respuesta
2

H o l a:

Intenta con lo siguiente, cambia en la macro esta línea:

Set STOCK = ThisWorkbook.Sheets("STOCK PRODUCTOS")

Por esta línea:

Set STOCK = ThisWorkbook.Sheets("refacciones")

Prueba y me comentas, si todavía tienes problemas, envíame tu archivo para revisarlo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Ivan Piña” y el título de esta pregunta.

Si eso mismo hice cambie el nombre pero no me da te mando el archivo por correo espero me puedas ayudar !

H o l a:

Te anexo la macro actualizada

' INSERTAR PROCEDIMIENTO
Dim i, x, y As Integer 'TIPO NUMERICO
Public Sub AGREGAR_PRODUCTOS()
    Set DATOS = ThisWorkbook.Sheets("INGRESO DE DATOS")
    Set STOCK = ThisWorkbook.Sheets("STOCK REFACCIONES")
    With DATOS 'ALMACENA UN ENTORNO DE METODOS
        If .Range("D7") = "" Or .Range("i7") = "" Or .Range("I9") = "" Then
            MsgBox "Es necesario ingresar todos los datos", vbInformation, "Atencion"
            Exit Sub
        End If
        For i = 5 To 20000
            If STOCK.Cells(i, 3) = .Range("D7").Value Or STOCK.Cells(i, 3) = "" Then
                x = i
                Exit For
            End If
        Next
        'STOCK.Cells(x, 2) = .Range("D7").Value 'ID
        STOCK.Cells(x, 3) = .Range("D7").Value 'NOMBRE
        If .Range("I9").Value = "ENTRADA" Then
            STOCK.Cells(x, 4) = .Range("I7").Value 'ENTRADA
        ElseIf .Range("I9").Value = "SALIDA" Then
            STOCK.Cells(x, 5) = .Range("I7").Value 'SALIDA
        End If
        STOCK.Cells(x, 6) = Val(STOCK.Cells(x, 4) - STOCK.Cells(x, 5))
        If STOCK.Cells(x, 6) > 0 Then
           STOCK.Cells(x, 6).Interior.Color = 65535 'Amarillo
        Else
           STOCK.Cells(x, 6).Interior.Color = 255 'Rojo
        End If
        MsgBox "Producto Registrado", vbInformation, "EXCELSERVICIOS.COM"
        .Range("D7").Value = ""
        .Range("I7").Value = ""
        .Range("I9").Value = ""
    End With
End Sub

El nombre de la hoja debe ser "STOCK REFACCIONES", en tu archivo la pestaña tiene un espacio al final "STOCK REFACCIONES ", ya se lo quité.


Le hice unos ajustes a la macro, ya que en la hoja "REFACCIONES", la refacción no tiene código, entonces en la hoja "STOCK REFACCIONES", ya no se va a almacenar el código, ya que no existe.


Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas