Error 13 en tiempo de ejecución. Los datos no coinciden

Esta rutina está dentro del módulo Change en una de las hojas y lo que quiero hacer es que cada vez que se ingrese un dato en la celda F:F de la hoja SALIDA, me busque el código ingresado en la hoja "MAESTRO", guarde los datos de las columnas contiguas al dato encontrado en cada variable y luego las reemplazo en la hoja SALIDA, en cada celda contigua al código ingresado.

Adjunto la rutina para que me digan donde está el error- MUCHAS GRACIAS!!!

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nEan As Variant, nCant As Integer
Dim nDesc As Variant, nMode As String, nMarc As String
Dim nRango As Range
If Intersect(Range("F:F"), Target) Is Nothing Then Exit Sub
nEan = Sheets("SALIDAS").Range("F:F").value
Sheets("MAESTRO").Activate
Set nRango = Range("A2:F10000") 'rango donde buscar
nDesc = Application.VLookup(nEan, nRango, 2, False)
nMode = Application.VLookup(nEan, nRango, 3, False)
nMarc = Application.VLookup(nEan, nRango, 4, False)
nCant = 1
Sheets("SALIDAS").Activate
Cells(Target.Row, 1) = Format(Date, "dd/mm/yyyy")
Cells(Target.Row, 2) = Format(Time, "hh:mm:ss am/pm")
Cells(Target.Row, 7).value = nDesc
Cells(Target.Row, 8).value = nMode
Cells(Target.Row, 9).value = nMarc
Cells(Target.Row, 10).value = nCant
End Sub

Gracias!!
Alex Calle

1 Respuesta

Respuesta
1

Ejecutá nuevamente el proceso y cuando se detenga con el error, presioná el botón DEPURAR para que te lleve al Editor y puedas indicarnos en qué línea se detuvo.

Ese error, tal como se menciona, tiene que ver con que estás enviando datos de otro tipo a una variable definida de otro modo (nros x texto, texto x fechas, etc)

Otro problema que veo en tu macro: estás ejecutando el evento Change sin control de col F o lo que fuese... eso significa que cuando cambiás cualquier otra celda se vuelve a ejecutar... entonces debes agregar esto:

Sheets("SALIDAS"). Activate

Application.EnableEvents = false

'luego siguen las instrucciones de pase

Application.EnableEvents = true

Si esto resuelve tu problema NO OLVIDES finalizar la consulta. Sino enviame las aclaraciones de la depuración.

Hola nuevamente y muchas gracias por la respuesta.

Para que me entiendas mejor estoy adjuntando un enlace con el archivo que estoy trabajando.

EL error me lo arroja en la linea:

nDesc = Application.VLookup(nEan, nRango, 2, False)

Se trata de un Kardex con una hoja con los códigos de productos de un almacény un par de hojas mas de INGRESO y SALIDA. El asunto es que son miles de códigos y cada vez que ingreso un código en la hoja ingresos se demora una eternidad. Entonces estaba tratando de hacer una rutina para que cada vez que se detecte una modificación en la columna "D" de la hoja INGRESOS ó "F" de la hoja SALIDAS la macro ejecute la rutina ariba indicada y busque los datos para luego acumularlos en variables y grabarlas en la hoja a la derecha de la celda con el código.

Con esto me evito tener que copiar fórmulas en todas las celdas para que busque cada vez que se ingresa un dato.

Espero que me hayas entendido.

Nuevamente muchísimas gracias por tu ayuda!!!

Alex

Te envío el enlace del archivo por si no te llegó

https://mega.co.nz/#!ldlkmbKS!Pii_G0bbR3EIXqGKO7pkKnZooTcjIMZGKwk8qzb1n9o

Gracias!!!

Alex

Pensá cómo harías una fórmula BUSCARV o CONSULTAV en una celda:

=CONSULTAV(dato a buscar, rango de búsqueda, col a devolver, falso)

Con tu instrucción, no estás dándole un dato a buscar sino toda la col F... revisá tu proceso y luego me comentas los cambios que hiciste, si todavía te queda algún error.

Te recuerdo que la consulta sigue abierta... Envía las aclaraciones o finaliza la consulta si ya quedó resuelta.

Sdos!

Hola nuevamente Elsa, la verdad que estoy entrampado, ahora me busca el dato, pero en la misma hoja SALIDA y no en la hoja MAESTRO que es donde tengo los datos a buscar.

Te he enviado el archivo para que lo analices y me digas como hacer que funcione.

Te estoy eternamente agradecido....

Alex

No recibí aún el libro... pero si se trata de la instrucción que tenías al inicio sería:

Set nRango = Sheets("MAESTRO").Range("A2:F10000") 'rango donde buscar

Y así con cada definición de rangos o celdas.

Sdos

Elsa

Voila...!!! Por fin Elsaa!!!

Así queda la instrucción y corre de maravilla!

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nEan As Variant, nCant As Integer
Dim nDesc As Variant, nMode As Variant, nMarc As Variant
Dim nRango As Range

If Intersect(Range("F:F"), Target) Is Nothing Then Exit Sub

nEan = CStr(Cells(Target.Row, 6).value)
nEan = CStr(Cells(Target.Row, 6).value)
Sheets("MAESTRO").Activate
Set nRango = Sheets("MAESTRO").Range("A2:F10000") 'rango donde buscar

nDesc = CStr(Application.VLookup(Val(nEan), nRango, 2, False))
nMode = CStr(Application.VLookup(Val(nEan), nRango, 3, False))
nMarc = CStr(Application.VLookup(Val(nEan), nRango, 4, False))
nCant = 1
Sheets("SALIDAS").Activate
Cells(Target.Row, 1) = Format(Date, "dd/mm/yyyy")
Cells(Target.Row, 2) = Format(Time, "hh:mm:ss am/pm")
Cells(Target.Row, 7).value = nDesc
Cells(Target.Row, 8).value = nMode
Cells(Target.Row, 9).value = nMarc
Cells(Target.Row, 10).value = nCant
End Sub

Muchas gracias por tu paciencia.

Alex

Entonces voy a resumir tus problemas desde el inicio de tu consulta:

- Indicar en la consulta cuál es la línea con error dentro de una macro. (Ejecutá nuevamente el proceso y cuando se detenga con el error, presioná el botón DEPURAR para que te lleve al Editor y puedas indicarnos en qué línea se detuvo.)

- Al utilizar el evento Change debes indicar claramente en qué rango actuará el control (estás ejecutando el evento Change sin control de col F o lo que fuese...)

- Cuando se trabaja con varias hojas, no olvidar de indicar en la función de qué hoja se trata.

Solo resta entonces que finalices la consulta.

Sdos

Elsa

Te agradezco Elsa, por tu dedicación y preocupación, es gratificante poder encontrar ayuda en este medio, aún cuando nos encontremos tan distantes.

Espero poder ayudar a alguien, de la misma manera como tú lo haz hecho.

Hasta pronto!

Alex

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas