Jump to content

aaquino

Members
  • Content Count

    454
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by aaquino

  1. Buen día estimados compañeros. Muchas gracias por la ayuda. Algo tan sencillo, uno mismo se complica la vida. Pueden cerrar el tema.
  2. Muy buen día estimados compañeros, Escribo en esta ocasión, ya que no logro encontrar la respuesta a mi necesidad, por lo que recurro a este grandioso foro. La situación es que necesito crear una copia de un libro de Excel habilitado para macros, que contiene macros y formularios, pero que esta copia se guarde en formato normal, es decir con extensión ".xlsx" He encontrado un post aquí mismo en el foro, donde hablan de lo mismo, pero al hacer mis pruebas con la macro para eliminar el código VBA, simplemente no funciona, y al querer abrir nuevamente el archivo guardado con formato "xlsx" da error, y me indica que la extensión del archivo no es compatible. Al hacer la revisión del archivo, cambiándole la extensión a "xlsm", observo que todo el código y formularios aún siguen ahí. Es por esto que recurro a ustedes, para que me hagan favor de indicarme si estoy haciendo algo mal, o si hay alguna nueva opción para hacer lo que solicito. Adjunto archivo de muestra, para que vean el código que he implementado, pero que sencillamente, no funciona. Quedo atento a su pronta respuesta. Guardar Copia.xlsm
  3. Hola @Antoni gracias, ya encontré la solución, ya que a mí me sigue dando el mismo resultado, una lista desplegable con el valor "123456789". La solución que encontré fue en definir la variable lCodigoEF como "String" Pueden cerrar el tema.
  4. Buenos días, tardes, noches compañeros Hoy vengo con una duda que no he podido encontrar solución, en internet o en el foro. La consulta es la siguiente: estoy tratando de realizar una macro para insertar de manera automática una "Validación de datos con lista desplegable", con números enteros, la macro que he hecho, basándome en lo que he encontrado en internet y en mi poco expertís es la siguiente: With ActiveWorkbook With .ActiveSheet For iCo = 1 To 9 lCodigoEF = lCodigoEF & "," & CStr(iCo) Next iCo With .Range("C2:C1000").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _ Formula1:=CStr(lCodigoEF) .IgnoreBlank = True .InCellDropdown = True .ShowInput = True .ShowError = True End With End With End With La cuestión está en que al momento de ejecutar la macro, lo que consigo es que en la lista desplegable me coloque el número "123456789", y lo que yo necesito es que se muestre una lista desplegable del 1 al 9. Por lo anterior, recurro a ustedes para que me ayuden a identificar cuál es el error y cómo solucionarlo. Quedo atento a su amable ayuda. Muestra AE.xlsm
  5. Gracias por tu respuesta @Haplox pero quisiera que se pudiera hacer con fórmulas, ya que en los equipos que se usará no permite la ejecución de macros.
  6. Buen día compañeros, espero que estén bien. Quiero molestarlos, ya que no logro encontrar solución a lo que necesito. Lo que no logro encontrar es cómo crear una lista validada en Excel, pero que tenga datos consecutivos, es decir, colocar en la lista los números del 1 al 1000 (por ejemplo), pero sin necesidad de estar escribiendo los números dentro de la lista. Sé que muchos dirán que con hacer una lista en una hoja vacía del 1 al 1000 se logra el cometido, pero no es lo que necesito, ya que no quiero llenar el archivo de hojas inútiles y que en algún futuro pueda ser manipulado. Entendería que no es necesario un archivo, puesto que no solicito macro o similar, sino solamente creo que sería con una fórmula, pero no logro encontrar con la fórmula que necesito. Si es necesario subo un archivo, pero no lo veo tan viable, puesto que solo necesito una fórmula.
  7. Muchísimas gracias a ambos por sus respuestas. Era algo tan sencillo por no decir obvio, pero me estaba haciendo bolas yo solo. Logré hacerlo, considerando un tamaño de hoja media carta y la disposición de la hoja en horizontal. Pueden cerrar el tema
  8. Estimado @avalencia, agradezco mucho tu respuesta. Ya he probado con la solución que me has brindado, pero no logro el resultado esperado. Tal como lo indiqué en la consulta, lo que necesito es que al momento de generar el PDF, éste sea únicamente del área de impresión, pero tal cual está la macro, lo que hace es generar un PDF dejando el espacio en blanco de la hoja que no se ha usado, tal como el ejemplo que cargué. Quedo atento a sus respuestas, compañeros.
  9. Muy buenos días, tardes, noches compañeros expertos en VBA. Quisiera molestarlos con algo que necesito hacer, pero no logro encontrar la documentación adecuada para llevar a cabo mi propósito. El tema es el siguiente: Tengo una macro, la cual funciona perfectamente, ya que me genera un PDF de la hoja en Excel activa. La cuestión es que lo que necesito es que la macro me genere el PDF únicamente del área de impresión, sin que se vea el resto de la hoja en blanco, tal como se ve en el ejemplo que adjunto. La macro que uso es la siguiente: Sub HojaEnPDF() Application.ScreenUpdating = False Dim Hoja As Worksheet Dim Nombre As String Dim Original As String, Nuevo As String Dim Ruta As String Set Hoja = ActiveSheet Original = ActiveWorkbook.Name Nuevo = Left(Original, InStrRev(Original, ".") - 1) Nombre = Nuevo & "-" & Hoja.Name & ".pdf" Ruta = ActiveWorkbook.Path Hoja.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Ruta & "\" & Nombre, quality:=xlQualityStandard, _ includedocproperties:=True, ignoreprintareas:=False, openafterpublish:=True Application.ScreenUpdating = True End Sub Por si alguien me pudiera ayudar, se lo voy a agradecer. Recibo AE.xlsx Recibo AE-Hoja1.pdf
  10. Buen día compañeros, perdón, es que se me complicó un poco el tema... no andaba de vacas, jajaja, es que por mi trabajo me toca viajar un poco, y por lo mismo hasta hoy pude regresar a la oficina. Hice pruebas en otras PC, con ambos archivos, haciendo los cambios que me sugirieron y revisando las librerías, pero el tema está en que en algunas el archivo funciona perfectamente, y en otras no. Saber qué será, seguiré investigando y veré si logro solucionarlo, o sino, tendré que buscar otro método para la búsqueda. Cualquier cosa les estaré informando. Por el momento pueden cerrar el tema, ya que no es problema del archivo sino de las máquinas de la empresa. Agradezco mucho su ayuda.
  11. Muchas gracias compañeros, Haré las revisiones que me comentan, y también probaré con el archivo que me compartieron, y cualquier cosa les comento. Solo les pido de favor que no cierren el tema, ya que actualmente no me encuentro en la oficina y regreso hasta el lunes, por lo que no podré hacer las pruebas sino hasta ese día.
  12. Que tal @avalencia Te comento, todas las PC tienen Office 365 completo, son Windows. El error me da en todas las PC que están en inglés, ya que como les comenté anteriormente, hicimos pruebas con el de sistemas, él tenía el office en inglés y daba uno de los errores, por lo que le cambió el idioma a su office y todo le fue perfecto. De ahí fue que pensamos que el error estaba en que yo había programado en un office en español y que por eso no corre en una PC con office en inglés. Creo que el error estará en la programación del evento "Enter" del combobox, ya que como les digo en algunas máquinas ahí es donde me dice que está el problema, pero no sé si es ahí o en otro lado. Adjunto nuevamente el archivo sin contraseña, fue mi error no haberla quitado. InterAction - Ingreso de oportunidades.xlsm
  13. Muchas gracias @avalencia , pero aún sigo con el mismo inconveniente. La verdad, ya no sé que hacer.... ayudaaaa!!!! jajaja. La verdad es que ya me estresé con esto, ya que no logro dar con la solución. Por si alguien me puede echar una mano se lo voy a agradecer. Adjunto la última versión que tengo, por si me pueden ayudar. InterAction - Ingreso de oportunidades.xlsm
  14. Gracias por tu ayuda @avalencia Te comento, el archivo que he cargado aquí es el mismo que he usado de prueba en otras PC, con los mismos datos, a lo sumo se agregan 1 o 2 líneas solo para ver que el botón "Save" sí funcione. La versión de Excel es Office 365, pero está instalado en la PC, o sea, NO usamos un navegador para usar Excel. El error en pantalla salta al dar clic en el botón de la hoja "Data" que dice "Find", al solo dar clic da el error. Este botón hace un llamado a un form, el cual no se inicializa, ya que detecta un error en ejecución Como mencioné, hay otro error, y es que en algunas PC sí se inicializa el form, sin embargo el botón "Aceptar" no hace lo que debería. El proceso que corre este botón es, al seleccionar algo del listbox debería desplegar la información en la hoja "Data", si no se ha seleccionado algo en el listbox, debería enviar un mensaje donde indica que se debe seleccionar algo. Al fin, les comento, en conjunto con el de sistemas hemos detectado la causa del error, mas no así la solución. El problema está en que en mi PC tengo configurado Office en "Español", y la mayoría de mis compañeros tienen configurado Office en "Inglés". Vi que en mis macros yo hago un llamado a las hojas, y las nombro tal como me aparecen a mí: "Hoja1" y "Hoja2" Vi esto y pensé que la solución era fácil, y decidí cambiar el nombre en las propiedades de cada hoja al nombre "HojaData" y "HojaBD", respectivamente, y posterior a ello hacer los cambios respectivos en toda la programación, esto no funcionó. Cambié, y ahora en lugar de hacer el llamado directo a las hojas, lo hago por medio de la función "Sheets("Data")" y "Sheets("BD"), respectivamente, y posterior a ello hacer los cambios respectivos en la programación, esto tampoco me funciona... La verdad es que ya no sé qué hacer.... alguien me puede ayudar con esto. Gracias
  15. @JSDJSD te agradezco mucho tu ayuda. Quedo atento a tus comentarios, ya que el mismo archivo que he subido al foro, me está dando otro error, en otra PC que lo probé, y esta vez lo que está haciendo es que si carga el formulario, pero al presionar el boton "Aceptar", éste debería mostrar información en la hoja "Data", de acuerdo a la selección del usuario, y luego hacer salir del formulario, sin embargo, en la última PC que lo probé no muestra la información ni sale del formulario, es como si el botón no tuviera programación alguna. Es bien raro, pero posiblemente sea algo mal programado, o no sé.... me tiene algo confundido esto. Quedo atento a tus comentarios, y a los de cualquier otro usuario que me pueda ayudar.
  16. Buen día estimado grupo, Estoy teniendo un problema que no logro encontrar solución. La cuestión es que el archivo que estoy trabajando, me está dando un problema al cargar un formulario de búsqueda de información. Este form lo que hace es únicamente una búsqueda en una base de datos, en el cual hay un combobox, que se llena con "datos únicos" de la base de datos. El código que uso para cargar el combobox es el siguiente: Private Sub cbx_Cliente_Enter() Dim Fila As Long, Final As Long Dim Registro As Integer Dim i As Long For Fila = 1 To cbx_Cliente.ListCount cbx_Cliente.RemoveItem 0 Next Fila Final = Hoja2.Range("A" & Rows.Count).End(xlUp).Row With Hoja2 For i = 2 To Final Registro = WorksheetFunction.CountIf(.Range(.Cells(1, 3), .Cells(i, 3)), .Cells(i, 3)) If Registro = 1 Then Me.cbx_Cliente.AddItem .Cells(i, 3) End If Next i End With End Sub Al ejecutar el llamado del formulario en la PC donde fue creado el archivo no da problema. El problema está al momento de ejecutarlo en otra PC, ya que marca el error -2147352571 (80020005), y marca la siguiente línea en amarillo. Me.cbx_Cliente.AddItem .Cells(i, 3) Me podrían indicar dónde puede estar el error. Adjunto el archivo para que me puedan ayudar.InterAction - Ingreso de oportunidades.xlsmInterAction - Ingreso de oportunidades.xlsmInterAction - Ingreso de oportunidades.xlsm InterAction - Ingreso de oportunidades.xlsm
  17. @bigpetroman muchísimas gracias, ya con eso se solucionó.... Ves que algo tan sencillo a mí se me complica a veces. Tema solucionado.
  18. Muy buenos días, tardes, noches compañeros. Disculpen que los venga a molestar, pero estoy realizando un proyecto que es sencillo, pero de alguna manera se me complicó, jejeje. La cuestión está, en que necesito validar un rango de celdas, y que estas no se encuentren vacías (en el archivo adjunto sería de la celda B6 a la B17). El problema está en que en medio de dicho rango de celdas, hay 3 que son "opcionales" o hay una "excepción", es decir que se pueden o no llenar, pero no logro correr una macro para que valide que las celdas estén vacías, pero que omita estas 3 celdas que son opcionales (en el archivo adjunto van marcadas en color amarillo). Actualmente tengo esta macro que me hace la validación, y lo hace bien, pero no logro hacer que haga una excepción. If cbx_Valor.ListIndex = 0 Then max = 23 Else max = 17 End If For i = 6 To max If Hoja1.Range("B" & i).Value = "" Then valor = Hoja1.Range("B" & i).AddressLocal Mensaje = Mensaje & vbNewLine & valor End If Next i If Not Mensaje = "" Then MsgBox "No se puede continuar. Las siguientes celdas están vacías: " & vbNewLine & _ Mensaje, vbInformation, "InterAction" Exit Sub Else '.... continúa todo el código que se debe ejecutar Espero puedan echarme una mano con esto. Quedo atento a su pronta respuesta. InterAction - Ingreso de oportunidades.xlsm
  19. Hola Buen día, aquí te hace falta un "." (punto) antes de la palabra Range Déjalo así: With .Range("D23:D24").font Ya que sin ese punto, estás haciendo referencia a la hoja activa, y no a la Hoja7, como es tu intención. El "." (punto) lo debes colocar antes de todas las palabras Range que tienes en tu macro. Saludos.
  20. Muchas gracias por su ayuda compañeros, Me sirvió la solución del gran @Gerson Pineda Saludos.
  21. Gracias por tus comentarios.... Solo que creo que no has leido: 1. Las normas, donde indican claramente que NO se puede escribir en mayúsculas, para expresar algo con mayor intensidad lo tienes que hacer con negrita. 2. Lo que le dije a Gerson, que no conozco muy bien el uso de los arrays, no que no supiera hacer un libro como complemento. Veré si lo que me has dado como solución funciona, sino lo haré saber.
  22. Que tal Leopoldo, te comento, y tal vez no me he dado a entender. Lo único que necesito que quede en el Array, o en la solución propuesta, son los números del 1 al 7, ya que lo único que estoy validando es el primer dígito que se ingrese en el combobox, los códigos ingresados en el combobox serán almacenados en otro lado. Lo único que necesito es que en alguna Variable me queden almacenados los números del 1 al 7, y que al momento de ingresar el primer dígito en el combobox valide si ese primer dígito existe en la variable, es decir, si el primer dígito ingresado en el combobox es 1, 2, 3, 4, 5, 6 o 7. Quedo atento a tus comentarios.
  23. Que tal mi estimado @Leopoldo Blancas, He validado tu solución, sin embargo, tal como le comenté a Gerson, dejar la información grabada en una hoja no me funciona, ya que al final de todo mi proyecto, el formulario y demás, lo dejaré como parte de un "Addin", entonces es por ello que necesito que, ya sea el array o alguna otra solución, quede dentro del mismo código y no ligado a una hoja. Quedo atento a tus comentarios.
  24. Que tal mi estimado @Gerson Pineda , tiempo de no molestar, verdad?.... jajaja Te comento, el código que se utilizaría sería "Numérico", yo dejaría el formulario para que solo acepte números. La cuestión de solicitar ayuda, es porque no logro entender muy bien el funcionamiento de los Array, y no deseo una clase, sino que necesito un pequeño empujón (ayuda a solucionar el presente caso), para entender cómo funcionan. El principal motivo de esto es que, al finalizar todo el proyecto, lo que haré es agregar el formulario a un "Addin", en el cual ya tengo varios procedimientos, por lo que dejar la validación hacia una hoja, al final me daría problemas, ya sea de ejecución, compilación, o simplemente no haría lo que solicito. Quedo atento a tus comentarios.
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png