Saltar al contenido

Error al intentar iniciar mi formulario


Puche

Recommended Posts

Hola buenas noches,

Estaba trabajando con mi Userform, todo funcionaba perfectamente. Y de repente, intento hacer un registro nuevo para comprobar que todo seguía funcionando y me salta el siguiente error (adjunto).

He iniciado el depurador y parece ser que el problema lo tengo en la macro "cargardatos_palau" en la propiedad List.

Lo raro es que antes no me generaba error y ahora si.

Espero me puedan ayudar.

Saludos!

error.JPG

PaqNuevo.xlsm

Enlace a comentario
Compartir con otras webs

@JSDJSD,

Muchas gracias por tu respuesta.

Con eso soluciono para que me vuelva a iniciar el UserFrom, me al querer hacer una entrada nueva en "ListPalau", me vuelve a dar  error en la pripiedad List de la Macro "Cargadatos_Palau".

Adjunto imagen de error.

Saludos,

error.JPG

Enlace a comentario
Compartir con otras webs

@JSDJSD,

Creo que ya lo tengo solucionado!

El tema es que cree una macro que hacia la función de BuscarV, dependiendo del nombre que ponía en Contactos (al realizar un registro nuevo), automáticamente me rellenaba el box y la ubicación.

Al hacer prueba de registros, solo ponía "A, AA, AA, AA" en todos los campos por lo que cuando hacia el registro nuevo, como no encontraba coincidencias con "AA", me generaba el error.

Intentare solucionarlo yo mismo.

Saludos y gracias!

Enlace a comentario
Compartir con otras webs

@JSDJSD,

Buenos, tras varios intentos...

He conseguido que no me genere el error.

He aplicado el siguiente código

Sub box_ubicacionn()
'ASIGNO BOX Y UBICACION
    Dim cont As Long
    Dim ultimalinea As Long
    Dim box As Variant
    Dim ubicacion As Variant
    Dim nombre As Variant
    Dim rango As Variant
    
        ultimalinea = Sheets("PALAU").range("A" & Rows.Count).End(xlUp).Row
        Set rango = Sheets("PERSONAL").range("B2:E2100")
        
        For cont = 2 To ultimalinea
            nombre = Sheets("PALAU").Cells(cont, 6)
            box = Application.VLookup(nombre, rango, 3, False)
            ubicacion = Application.VLookup(nombre, rango, 4, False)
        If IsError(box) Then
            box = ""
            ubicacion = ""
            MsgBox ("Este contacto no esta en nuestra base de datos, debes realizar el registro en Personal para por asignar Box y Ubicacion"), vbInformation, "MANGO"
        Else
            Sheets("PALAU").Cells(cont, 11) = box
            Sheets("PALAU").Cells(cont, 12) = ubicacion
            End If
        Next cont
End Sub

El problema que me da este código es que cuando hago un registro, aunque tenga el contacto en mi base da datos, me salta el MsgBox. Luego me apliza bien el Box y la Ubicación pero solo quiero que me salte ese mensaje cuando el contacto no este en mi base de datos.

Seguro que es una tontería pero no consigo dar con ella XD

Saludos!

Enlace a comentario
Compartir con otras webs

@JSDJSD

Perfecto ya funciona todo bien!

Si, había pensado en esa posibilidad, el problema es que en ocasiones vienen paquetes a nombre de un departamento, no a una persona en concreto, entonces necesito que pueda realizar entradas de todos modos.

Muchas gracias por tu ayuda!

Enlace a comentario
Compartir con otras webs

@JSDJSD

Pues no había pensado en esa posibilidad, pero no puedo ni imaginar como se puede conseguir eso jejejej.

Es decir, cuando haga un registro nuevo, si la persona no esta inscrita, automáticamente que me lleve para realizar el registro de la persona, y una vez lo haga, se haga el registro en el listbox de Palau automaticamente?

Enlace a comentario
Compartir con otras webs

@JSDJSD,

Si que tengo un formulario de entradas de personal, esta en la pagina 7.

Si te fijas, en ese formulario, al darle a "nuevo" me asigna un código de empleado nuevo, si que se pueda repetir, te lo digo porque me imagino que eso puede influir en el código.

Te agradecería mucho si me pudieras ayudar con eso!

Un saludo ;) 

Enlace a comentario
Compartir con otras webs

Hace 58 minutos , JSDJSD dijo:

Me acabo de dar cuenta de que cuando haces el registro de la perosna nueva, no me aplica el box y la ubicacion. Luego si vuelvo a hacer una entrada y pongo el mismo nombre si me lo aplica pero a la 1 no

 

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Saludos a ambos. Copiar y pegar por sí solas, no tengo el conocimiento de que sirvan como "evento" para actualizar las referencias que buscas hacer, en la forma que lo quieres hacer, ó la fórmula como la quieres hacer. Te recomiendo abrir un tema similar en Macros, es posible que algún Maestro te de alguna idea. Por otro lado, si debe ser con funciones, entonces tendías que interactuar con COLUMNA() y FILA() para que al pegar el destino "sepa" donde está ubicado e intentar cambiar la referencia. =INDIRECTO(CARACTER(COLUMNA()+64)&FILA()) Algo como eso se podría usar para obtener el código ASCII de la letra de la columna (donde 65 es el código para “A”), y FILA() devuelve el número de la fila. La función CARACTER() convierte el código ASCII en una letra. Luego, INDIRECTO() toma la cadena resultante (por ejemplo, “A1”, “B2”, etc.) y la usa como una referencia de celda. En ese caso, una posible idea de editar tu ejemplo sería: =SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&"1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")); 0)   Enfatizo que es una idea, es muy probable que hay que editar. Así como esta su tema, la recomendación del maestro toma relevancia porque especular o deducir no es lo adecuado para intentar ayudar en este tipo de consultas. Por esta causa de mi parte por ejemplo no puedo aportar algo adicional.
    • En el ejemplo te he puesto 1 segundo para no hacer largo el gif, cámbialo a tu necesidad
    • Sub RecorrerRangoC() Set hoja = ActiveSheet Set rango = hoja.Range("C2:C" & hoja.Cells(hoja.Rows.Count, "C").End(xlUp).Row) If rango.Cells.Count = 0 Then MsgBox "No hay datos en la columna C.", vbExclamation Exit Sub End If For Each celda In rango.SpecialCells(xlCellTypeVisible) celda.Select Application.Wait Now + TimeValue("00:00:01") Next celda End Sub Prueba y comenta
    • Gracias   Al final funciona con esta formula. =SI.ERROR(C5*BUSCARV(A$2;TablaReparto[#Todo];COINCIDIR(D5;TablaReparto[#Encabezados];));C5) En la celda C5 he puesto la OT. Es similar a lo que me das como solución. ¡Muchas gracias por la ayuda!  
    • Hola, Mejor que subas un archivo que contenga esas fórmulas, indicando qué resultados esperas conseguir. Así ayudas a quien quiera ayudarte; no le obligas a que reproduzca ese modelo, y de paso podrá ver cuál es el objetivo buscado con esa/s fórmula/s. Saludos,
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.