Jump to content

Héctor Miguel

Members
  • Content Count

    1,297
  • Joined

  • Last visited

  • Days Won

    54

Reputation Activity

  1. Like
    Héctor Miguel got a reaction from tierra_pampa in MACRO PARA DEVOLVER HIPERVINCULO Y MANTENER CONTENIDO CELDA   
    consultas en un foro de macros y preguntas por una fórmula en celdas ?
    asumiendo que buscas una fórmula...
    si quieres que se devuelva un hipervínculo (real), necesitas de la función de hoja de cálculo =HIPERVINCULO("dirección a donde saltar";"texto en la celda")
    1) tu principal inconveniente es que en la celda [A7] NO puedes tener "un dato previo" (ABCDE001), Y CAMBIARLO por una fórmula
    - o pones el concepto (ABCDE001) en otra celda
    - o lo dejas como parte de la fórmula
    2) si NO es indispensable (o requisito) que tu libro "datos_web.xlsx" este cerrado ?
    puedes usar una formula como esta:
    =si(contar.si([datos_web.xlsx]hojadatos'!$n:$n;i7);hipervinculo(indice([datos_web.xlsx]hojadatos'!$af:$af;coincidir(i7;[datos_web.xlsx]hojadatos'!$n:$n;0));"ABCDE001");"") 3) si quieres que funcione aun con libros cerrados (las funciones x.SI(... no lo hacen) tienes que cambiar a una fórmula más larga (p.ej.)
    =si(esnumero(coincidir(i7;'c:\users\usuario\documents\cliente\datos2020\[datos_web.xlsx]hojadatos'!$n:$n;0));hipervinculo(indice('c:\users\usuario\documents\cliente\datos2020\[datos_web.xlsx]hojadatos'!$af:$af;coincidir(i7;'c:\users\usuario\documents\cliente\datos2020\[datos_web.xlsx]hojadatos'!$n:$n;0));"ABCDE001");"") saludos,
    hector.
  2. Like
    Héctor Miguel got a reaction from GabrielRaigosa in Cantidad de valores decimales   
    no soy yo "quien" para decirlo, pero el tema del número de decimales cae en los huecos de la "aritmética de punto/coma flotante", considerando que...
    1) los procesadores interpretan los números (reales, racionales, ...) en "binario"
    2) cuando una división es (p.ej.) 1/3 va a generar un periódico "infinito" de decimales
    la alternativa es "redondear" decimales a un límite cercano a la precisión numérica de excel (14, 13, 12, 11, 10, ...) según la necesidad del cálculo
    saludos,
    hector.
  3. Like
    Héctor Miguel got a reaction from Jose BN in contar registros visibles   
    hola, a ambos !
    o puedes usar esta variante:
    Function cuentaUnicosEnRangoFiltrado(rango As Range) As Long ' el nombre de la funcion es obvio ' _ pasar como argumento el rango filtrado SIN el tiitulo ' _ R&D: Héctor Miguel Orozco Díaz ' _ una de las contadas situaciones en que el metodo Evaluate se puede usar en una UDF llamada desde celdas ' Dim a As String, b As String a = rango(1).Address(0, 0): b = rango.Address(0, 0) cuentaUnicosEnRangoFiltrado = Evaluate( _ "sum(if(frequency(if(subtotal(3,offset(" & a & ",row(" & b & ")-row(" & _ a & "),)),match(" & b & "," & b & ",)),row(" & b & ")-row(" & a & ")+1),1))") End Function  
  4. Thanks
    Héctor Miguel got a reaction from LaFlower in Macro Eliminar Valor en Celdas Combinadas   
    las celdas "combinadas" suelen llegar a convertirse en "una espina en..." (donde no puedes permanecer cómodamente sentad@)
    - estorban a la navegación por la hoja (incluso por macros)
    - no puedes usar (p.ej.) en .ClearContents (que te dice el mensaje de error ?)
    - (a menos que identifiques que son celdas combinadas y "afectes" -solo- a la primer celda del área combinada)
    lo que si puedes usar es cambiar "su valor" por... nada ( = "" ) o ( = empty)
    p.ej. cambia tu procedimiento a...
    Sub Eliminar_texto() Dim lc As Long, col As Long lc = Cells(1, Columns.Count).End(xlToLeft).Column For col = 1 To lc If Len(Cells(1, col).Value > 3) Then Cells(1, col) = Empty Next End Sub moraleja: cuídate de las celdas "combinadas"
  5. Like
    Héctor Miguel got a reaction from gacg1310 in ERROR MACRO EN MAC   
    en vba, los errores del tipo -2147xxx (800xxx) significan que una instrucción intenta llamar a un objeto (propiedades, etc.) que NO está presente (o visible) en ese momento
    sería conveniente "ver" la linea que lo causa (ese tipo de imágenes y "nada" vienen a ser lo mismo)
    otra posibilidad es que se trate de controles ActiveX (quizá en formulario ?) u otra librería de objetos que NO tienen soporte en excel:mac
  6. Like
    Héctor Miguel got a reaction from Jose BN in Aumentar el tamaño de la barra de etiquetas?   
    puedes descargar el siguiente complemento y tendrás un panel con la lista de las hojas (siempre a la vista ?)
    - Excel’s Navigation Pane
    (versión de prueba por 30 días) con más de 300 funcionalidades disponibles (?)
  7. Like
    Héctor Miguel got a reaction from Jose BN in Encontrar números que suman una cantidad   
    en tu adjunto en devolución va lo que obtienes de aplicar un algoritmo (vba) basado en la técnica de Tushar Mehta que puedes estudiar luego de visitar este artículo:
    - Conciliando cuentas con Excel
    ya que lo analices, descarga el modelo en excel desarrollado para el ensayo
    como se menciona, seria interesante distinguir cual es la combinación "correcta" (cuando existan dos o más posibles combinaciones ?)
    si prefieres alternativas usando solo fórmulas y funciones integradas, los "sumandos" no pueden ser más de 20
    de sumandos (ambos).xlsx
  8. Like
    Héctor Miguel got a reaction from Gerson Pineda in Posiciones de una carrera según los tiempos en una tabla dinámica   
    1.- (hasta donde sé) las TD sólo pueden hacer un resumen de los datos que toman del origen y si no están en el origen... (hay que agregarlos ?)
    2.- en tu adjunto en devolución, agregué una columna a la tabla de origen con los cálculos correspondientes y en una TD (hoja agregada) sustituí "tiempo" por "posición"
    3.- si es requisito NO usar la columna agregada a los datos de origen... (?)
    3.a) usar transformaciones (PQ) ?
    3.b) usar DAX (PP) ?
    2.c) construir la TD por macros ?
    - otros ?
    td posXseg (sergio).xlsx
  9. Thanks
    Héctor Miguel got a reaction from Jant in ¿Cómo detener un macro en bucle al cerrar Excel?   
    prueba cambiando tus códigos a la siguiente estructura (todo en el mismo módulo):
    Dim siguiente As Date Const tiempo As String = "0:10:00" Sub Auto_Open() guardar End Sub Sub Auto_Close() detener End Sub Sub guardar() siguiente = Now + TimeValue(tiempo) ThisWorkbook.Save Application.OnTime Siguiente, "guardar" End Sub Sub detener(): On Error Resume Next Application.OnTime siguiente, "guardar", Schedule:=False End Sub  
  10. Confused
    Héctor Miguel got a reaction from JamesJhair in COMO UTILIZAR LOS MÓDULOS DE CLASES   
    1) los módulos "de clase" (por lo general) son para usos más "especiales"
    2) en ninguno de los casos conviene nombrar igual módulos y procedimientos
    3) vba reacciona no muy bien ante los nombres "ambiguos" (p.ej. nombres de procedimientos igual a funciones integradas)
    4) puedes asignar cualquier macro a (casi) cualquier objeto (botones, textboxes, autoformas, etc.)
    - si son controles ActiveX dees usar su propio evento '_click'
    haz tus propias pruebas y decide cual es la forma que más te sirve (?)
  11. ¡Excelente!
    Héctor Miguel got a reaction from JamesJhair in COMO UTILIZAR LOS MÓDULOS DE CLASES   
    el detalle en tu consulta es que usas un estilo de "adivinen lo que estoy pensando" (?)
    con respecto de tu adjunto...
    1) el módulo "de clase" no contiene nada y en tanto no decidas para qué quieres que "sirva", puedes iniciar pesquisas analizando artículos como este (solo por mencionar alguno):
    - Introduction To Classes
    2) en el evento '_click' del commandbutton de tu formulario (BTNBUSCAR) haces un "intento" de llamada a un procedimiento que NO existe: TraerNombre
    3) ese "TraerNombre" es el nombre de un módulo de código, que es un "contenedor" de procedimientos, es decir...
    - un módulo puede contener varios procedimientos siempre y cuando...
    - a) ningún procedimiento se llame igual a otro (tampoco igual a ningún módulo de código)
    - b) cualquier procedimiento declarado en módulos normales puede ser asignado a objetos con solo indicar el nombre del procedimiento en una línea u usando el método: => Call nombre_del_procedimiento
    4) en ese módulo (TraerNombre) parece que simulaste el traspaso del evento '_click' de un control indefinido de un userform (?)
    - aquí entrarían los módulos de clase, previa lectura del artículo sugerido (entre otros)
    - aunque haces referencia al control "TXTBUSCAR" (mismo que SI se encuentra en tu formulario), no es tan "simple" de referir sin calificar
    sugiero avanzar más lento (programación rutinaria en vba) y después avanzar a los módulos de clase (y mucho más) ?
  12. ¡Excelente!
    Héctor Miguel got a reaction from JamesJhair in COMO UTILIZAR LOS MÓDULOS DE CLASES   
    el detalle en tu consulta es que usas un estilo de "adivinen lo que estoy pensando" (?)
    con respecto de tu adjunto...
    1) el módulo "de clase" no contiene nada y en tanto no decidas para qué quieres que "sirva", puedes iniciar pesquisas analizando artículos como este (solo por mencionar alguno):
    - Introduction To Classes
    2) en el evento '_click' del commandbutton de tu formulario (BTNBUSCAR) haces un "intento" de llamada a un procedimiento que NO existe: TraerNombre
    3) ese "TraerNombre" es el nombre de un módulo de código, que es un "contenedor" de procedimientos, es decir...
    - un módulo puede contener varios procedimientos siempre y cuando...
    - a) ningún procedimiento se llame igual a otro (tampoco igual a ningún módulo de código)
    - b) cualquier procedimiento declarado en módulos normales puede ser asignado a objetos con solo indicar el nombre del procedimiento en una línea u usando el método: => Call nombre_del_procedimiento
    4) en ese módulo (TraerNombre) parece que simulaste el traspaso del evento '_click' de un control indefinido de un userform (?)
    - aquí entrarían los módulos de clase, previa lectura del artículo sugerido (entre otros)
    - aunque haces referencia al control "TXTBUSCAR" (mismo que SI se encuentra en tu formulario), no es tan "simple" de referir sin calificar
    sugiero avanzar más lento (programación rutinaria en vba) y después avanzar a los módulos de clase (y mucho más) ?
  13. Confused
    Héctor Miguel got a reaction from JamesJhair in COMO UTILIZAR LOS MÓDULOS DE CLASES   
    1) los módulos "de clase" (por lo general) son para usos más "especiales"
    2) en ninguno de los casos conviene nombrar igual módulos y procedimientos
    3) vba reacciona no muy bien ante los nombres "ambiguos" (p.ej. nombres de procedimientos igual a funciones integradas)
    4) puedes asignar cualquier macro a (casi) cualquier objeto (botones, textboxes, autoformas, etc.)
    - si son controles ActiveX dees usar su propio evento '_click'
    haz tus propias pruebas y decide cual es la forma que más te sirve (?)
  14. Like
    Héctor Miguel got a reaction from AlexanderS in Enviar por Outlook un rango de celdas manteniendo el formato configurado en Excel   
    hola, a todos !
    otra posibilidad es agregar un comando "perdido" en la interfaz desde la versión xl-2007 +/- así:
    a) desde las opciones de configuración de excel, personalizar la QAT
    b) muestra de la opción -> comandos que no están en la cinta de opciones (o todos los comandos)
    c) localiza (por orden alfabético) el que dice: "enviar a destinatario de correo"
    - nota: al poner el puntero sobre este comando, aparece una descripción que al final dice:
    -> (SendCopySendToMailRecipient)    <= así... entre paréntesis
    d) pulsa en el botón de: Agregar >> (a tu barra de herramientas de acceso rápido)
    al pulsarlo (desde la QAT) te dara la opción de enviar todo el libro como datos adjuntos
    o enviar la hoja actual (o el rango seleccionado) como cuerpo del mensaje
    OJO: deberás tener configurado cliente y cuenta de correo en windows (preferentemente outlook de office)
    también puedes hacer una macro que muestre el "sobre" para envóos por correo +/- con la siguiente instrucción:
      ActiveWorkbook.EnvelopeVisible = True
    saludos,
    hector.
  15. Like
    Héctor Miguel got a reaction from AlexanderS in Enviar por Outlook un rango de celdas manteniendo el formato configurado en Excel   
    hola, a todos !
    otra posibilidad es agregar un comando "perdido" en la interfaz desde la versión xl-2007 +/- así:
    a) desde las opciones de configuración de excel, personalizar la QAT
    b) muestra de la opción -> comandos que no están en la cinta de opciones (o todos los comandos)
    c) localiza (por orden alfabético) el que dice: "enviar a destinatario de correo"
    - nota: al poner el puntero sobre este comando, aparece una descripción que al final dice:
    -> (SendCopySendToMailRecipient)    <= así... entre paréntesis
    d) pulsa en el botón de: Agregar >> (a tu barra de herramientas de acceso rápido)
    al pulsarlo (desde la QAT) te dara la opción de enviar todo el libro como datos adjuntos
    o enviar la hoja actual (o el rango seleccionado) como cuerpo del mensaje
    OJO: deberás tener configurado cliente y cuenta de correo en windows (preferentemente outlook de office)
    también puedes hacer una macro que muestre el "sobre" para envóos por correo +/- con la siguiente instrucción:
      ActiveWorkbook.EnvelopeVisible = True
    saludos,
    hector.
  16. Like
    Héctor Miguel got a reaction from elinoky in Obtener resultado de un filtro en otra celda   
    mira si te sirve adaptar algo de lo aplicado en el adjunto (es antiguo pero funcional), no usa macros, sólo funciones integradas (si es requisito usar macros... comentas ?)
    Autofiltros.xls
  17. Thanks
    Héctor Miguel got a reaction from mastersnake in Graficar más de 80 valores en el eje Y   
    solo graficas 80 datos porque solo indicas un rango de 1 fila x 80 columnas (valores Eje-Y)
    selecciona en el grafico alguna serie (p.ej. la #1) y veras en la barra de formulas algo así:
    =SERIES(Graphics!$A$34,'Events data'!$D$22:$CN$22,Graphics!$B$35:$CC$35,1)
    si quieres plotear los 88 datos disponibles, cambia la referencia de columnas (según tu ejemplo) a:
    de la hoja 'Events data'
    D:CN = 87 columnas => D:CM = 88 columnas
    de la hoja Graphics
    B:CC = 80 columnas => B:CK = 88 columnas
  18. ¡Excelente!
    Héctor Miguel got a reaction from Jose BN in Función personalizada con BuscarV, extraño comportamiento.   
    es el comportamiento normal cuando a una UDF le asignas la propiedad "Applicaiton.Volatile" (es True por omisión) que determina si el resultado de la UDF se actualiza en cada (RE)calculo del modelo
    en todo caso, establece esa propiedad en False (Application.Volatile False) para que SOLO se refresque cuando se modifique alguno de los argumentos que intervienen en la función (?)
  19. ¡Excelente!
    Héctor Miguel got a reaction from Jose BN in Función personalizada con BuscarV, extraño comportamiento.   
    es el comportamiento normal cuando a una UDF le asignas la propiedad "Applicaiton.Volatile" (es True por omisión) que determina si el resultado de la UDF se actualiza en cada (RE)calculo del modelo
    en todo caso, establece esa propiedad en False (Application.Volatile False) para que SOLO se refresque cuando se modifique alguno de los argumentos que intervienen en la función (?)
  20. Like
    Héctor Miguel got a reaction from JuanP in Función personalizada con BuscarV, extraño comportamiento.   
    no se la intención clara y total de tu udf, pero (al parecer) lo que necesitas es cambiar el tipo de datos asignado a la variable "Valor", que estableces como: Dim Valor As String
    solo déjala sin tipo definido (asume variant por omisión) si la declaras "a secas" como solo: Dim Valor
  21. Thanks
    Héctor Miguel got a reaction from mastersnake in Graficar más de 80 valores en el eje Y   
    solo graficas 80 datos porque solo indicas un rango de 1 fila x 80 columnas (valores Eje-Y)
    selecciona en el grafico alguna serie (p.ej. la #1) y veras en la barra de formulas algo así:
    =SERIES(Graphics!$A$34,'Events data'!$D$22:$CN$22,Graphics!$B$35:$CC$35,1)
    si quieres plotear los 88 datos disponibles, cambia la referencia de columnas (según tu ejemplo) a:
    de la hoja 'Events data'
    D:CN = 87 columnas => D:CM = 88 columnas
    de la hoja Graphics
    B:CC = 80 columnas => B:CK = 88 columnas
  22. Like
    Héctor Miguel got a reaction from Gerson Pineda in CALCULAR PUNTO DE EQUILIBRIO   
    el punto de equilibrio es "el momento" en el que las ventas "cubren" los costos y gastos marcando un punto de referencia a partir del cual, un incremento en las ventas empieza a generar utilidades
    en tu caso, las ventas son inferiores a la suma de costos y gastos, razón por la cual "el negocio" PIERDE ANTES de siquiera iniciar, ya que resulta ser del orden de -24.117,8764 €
    la fórmula es correcta
  23. Like
    Héctor Miguel got a reaction from Gerson Pineda in CALCULAR PUNTO DE EQUILIBRIO   
    el punto de equilibrio es "el momento" en el que las ventas "cubren" los costos y gastos marcando un punto de referencia a partir del cual, un incremento en las ventas empieza a generar utilidades
    en tu caso, las ventas son inferiores a la suma de costos y gastos, razón por la cual "el negocio" PIERDE ANTES de siquiera iniciar, ya que resulta ser del orden de -24.117,8764 €
    la fórmula es correcta
  24. Like
    Héctor Miguel got a reaction from DimeQueSi in Indice de hojas   
    este es un "añejo" desarrollo (pero sigue funcionando)...
    Sub navegaHojas() With Application.CommandBars.FindControl(ID:=957) If Right(.Caption, 3) = "..." Then .Execute Else .Parent.ShowPopup End With End Sub  
  25. Like
    Héctor Miguel got a reaction from JSDJSD in casilla Confiar en el Acceso al modelo de objetos de proyectos de VBA   
    El acceso al modelo de objetos de proyectos de vba es un tema "sensible" de seguridad y no puede NI DEBE ser manipulado por un código auto-configurable (por obvias razones)
    Puedes modificar su configuración alterando el registro de Windows, concretamente un valor DWord de nombre "AccessVBOM" desde esta llave:
    HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Excel\Security
    (donde "x.0" corresponde a la versión de Office/Excel -que tendrás que averiguar-)
    Por lo anterior, solo tendrá efectos si la llave se modifica ANTES de ejecutar Excel, misma razón por la que "tu" aplicación NO PODRÁ auto-configurarse (se entiende ?)
    Alternativas ?...
    Avisar al usuario si las condiciones no son óptimas para tu aplicación
    Usar un script (*.vbs) que permita el acceso (modificando el registro) y...
    - Ejecute Excel y tu aplicación (o ...)
    - Configure una "tarea programada" para ejecutar Excel y tu aplicación
    NO olvides (al terminar) restablecer la configuración a la preferencia del usuario (?)
×
×
  • Create New...

Important Information

Privacy Policy