Jump to content

AlexanderS

Moderators
  • Content Count

    1,373
  • Joined

  • Last visited

  • Days Won

    56

Everything posted by AlexanderS

  1. Pero probaste abrir el archivo y ejecutar la macro?, el error 1004 regularmente es porque un nombre no definido o alguna comilla faltante etc.
  2. Un gusto @Sergio, sinceramente no sabría recomendarte alguna pagina o vídeo en concreto, la cinta que vez arriba la hice con una recopilación de paginas y un poco de prueba y error. Pero te aseguro que no es tan complicado como parece, seguro que con leer un poco de la documentación del programa le agarras el tiro https://bettersolutions.com/vba/ribbon/custom-ui-editor.htm Saludos.
  3. @RadioViraje73, correcto la instrucción copiara los datos en columnas contiguas, entonces tienes algunas opciones: 1 utilizar un ciclo while para leer cada columna de tu tabla individualmente o 2 realizar una consulta a por cada columna para poder utilizar el .CopyFromRecordset, algo como esto: Columnas = Array("FECHA", "PAGADO", "DEBE") For Each param In Columnas Sql = Replace("SELECT ? FROM [Datos$] where (FECHA BETWEEN #1/1/2020# and #31/3/2020#) and DEBE >0", "?", param) Rst.Open Sql, cn, 3, 3 Select Case param Case Is = "FECHA": Sheets("Resultado").Range("A2").CopyFromRecordset
  4. Hola @joselica, en este caso no es necesario tratar cada celda individualmente, revisa el adjunto y comentas. Saludos COLOR CELDAS (1) Ucase o Lcase.xlsm
  5. Hola @joselica, prueba el adjunto. Saludos COLOR CELDAS (1).xlsm
  6. Hola @Jeison Segura, debes subir algún ejemplo con tu código para entenderte ya que no todos conocemos de SAP y aun menos como funciona tu archivo. Saludos
  7. Hola @RadioViraje73, no es necesario recorrer con un ciclo while un recordset, puedes copiar los datos directamente a la hoja de excel con la instrucción .CopyFromRecordset Sheets("Hoja1").Range("A2").CopyFromRecordset Rst Saludos
  8. Hola @paikerr lo trabajo sin problemas en Office 365 y también lo he probado en versiones 2013,2016,2019 sin problemas. Saludos.
  9. Hola @darkstars9976, prueba este código y me comentas. Sub Copia_recetas() Dim Rng$, x# Dim rept As Range Dim celda With Sheets("BD_Recetas") Rng = .Range("D1") x = 9 For Each celda In Sheets("Proy.-Comer").Range(Rng) If celda <> "" Then Set rept = .Range("C9:C43").Find(celda, , , xlWhole) If rept Is Nothing Then _ .Cells(x, "C") = celda: x = x + 1 End If Next End With
  10. Has probado o tienes información sobre Power Pivot ?, si lo que haces simplemente es un exportación de los datos de access a excel no necesitas ninguna macro excel es capas de realizar la exportación a una tabla plana o dinámica, ademas si utilizas Power Pivot puedes crear las "formulas" internamente. Pero solo estoy suponiendo ya que desconozco la estructura de tu base ni lo que quieres hacer en excel. Si te parece puedes subir un ejemplo del accces y el excel, obviamente con datos ficticios pero con un formato fiel al original para que no tengas problemas para adaptarlo. Salu
  11. Hola @Nori777, no se si entendí pero puedes probar con este código: Sub registrar() Dim jugador As Range Dim Franjas As Variant jug = Sheets("Hoja2").Range("Q36") With Sheets("Hoja1") Set jugador = .Range("BD:BD").Find(jug, , , xlWhole) If jugador Is Nothing Then Exit Sub ult = jugador.End(xlDown).Offset(0, 1).End(xlUp).Row + 1 .Cells(ult, "BE") = Sheets("Hoja2").Range("M36") .Cells(ult, "BF") = Sheets("Hoja2").Range("O36") Franjas = Sheets("Hoja2").Range("L40:Q40"
  12. @jomunozta, tal como dice Cristian, recuerda que las fechas y horas en realidad son números con decimales y bueno por la forma de excel de tratar operaciones con números flotantes obtendrás un resultado con decimales. Puedes limitar el numero de decimales que debe devolver el resultado a 2 así el 7.99999999999 se convertirá en un 8.00. Y en este otro caso el resultado sera 1.50 Después es solo cuestión de evaluar esos decimales sin mayores a 0. Saludos
  13. Hola @Galactico, en ese caso debes buscar como utilizar los ciclos while, te adjunto un código que recorre un rango de celdas colocando un número aleatorio y con el while indico que la instrucción debe repetirse hasta que el número que entrega sea mayor a 50. Sub aleatoreo() Dim c As Range For Each c In Range("A1:A7") num = 0 While num < 50 ' El ciclo while se repite si num es menor a 50 num = Int((100 * Rnd) + 1) 'Generamos un número aleatorio Wend c = num Next End Sub Saludos.
  14. Inténtalo en una sola linea: Sub MsgBox() CreateObject("WScript.Shell").Popup "Hello", 1, "Se cierra en 1 segundo" End Sub Saludos
  15. Hola @MauriciodeAbreu, puedes probar con este código: Sub Eliminar_Rango(): On error Resume Next Dim Rango As Range ActiveSheet.Unprotect "1234" Set Rango = Application.InputBox("Selecione un rango de celdas para eliminar las filas asociadas a ese rango", Type:=8) If Not Rango Is Nothing Then Rango.EntireRow.Delete ActiveSheet.Protect "1234" End Sub Comentas, saludos
  16. Hola @jhon fredy, tus consultas no son claras ( esta y anteriores) por eso no obtienes respuestas. Debes indicar en tus consultas de forma clara la ayuda que necesitas, ademas adjuntar un archivo de excel para poder realizar pruebas ya que casi nadie esta dispuesto a crear un archivo de 0, los datos del ejemplo deben ser ficticios pero fieles al formato original. Realiza tus consultas explicando mas claramente el problema, adjunta un ejemplo. Así habrá mas usuarios dispuestos a usar su tiempo en atender tus consultas. Saludos.
  17. Bueno eso ya es un proceso normal de excel y el inicio depende de los recursos que este usando tu computadora en ese momento, por eso puede variar, y claro al inicio se ve la última hoja en la que estabas cuando guardaste el libro, si tu macro al ejecutarse cambia de hoja pues veras por un instante la última hoja abierta y después cambiará a la que indicaste en tu macro. Claro es más notorio cuando en tu código hay instrucciones como .Select o .Activate, las cuales son totalmente prescindibles y yo no recomiendo usar. En resumen no hay forma de evitar ese parpadeo inicial puesto que
  18. @Marcos14 este tema ya lo solucionaste o está pendiente ?, tengo una forma bastante interesante que utiliza el registro de windows para almacenar datos. Saludos
  19. Hola @JDG no estoy seguro si te entendi pero puedes probar colocando al principio de tu código application.ScreenUpdating=False Saludos
  20. Version 1.0.0

    17 downloads

    Resulta que hace unos años me tope con el problema de que en mi trabajo habían varios compañeros con un archivo con macros que yo les había pasado, pues resulta que el código del módulo tenia algunos errores o debía cambiar alguna parte del código. Esto era un problema ya que como eran varias personas tenia que ir una por una a modificar el código del modulo para actualizarlo ya que no podía enviar el archivo por correo porque cada uno tenia datos diferentes ingresados en el libro. Pero teníamos algo en común, todos estábamos en la misma red, entonces se me ocurrió el código que explico
  21. Hola @OAGARCIA, es cierto lo que nos comenta @avalencia, el foro es para responder consultas puntuales y aprender, ese aporte cuando lo realice fue porque tenia un problema similar al tuyo y decidí compartirlo en el foro para que al que le fuera de utilidad pudiera aprovecharlo. Esta ahí para que cualquiera pueda usar mi idea y transformarla a su gusto, ademas aprender de ello. De igual forma no es la primera vez que me plantean lo de la actualización de varios módulos con ese código, así que aprovechando que llevo tiempo sin subir algún aporte al foro, voy a pensar en algo y ya te aviso
  22. Es es fácil simplemente has de agregar al inicio del código del botón una linea así: Me.CommandButton1.Visible = False Me.CommandButton2.Visible = False Me.CommandButton3.Visible = False Y así para todos los botones o controles que no quieres que aparezcan. Saludos @Marcos14 y @JSDJSD
  23. @Marcos14, lo que pides no es tan sencillo pero es posible, en el adjunto esta el formulario y funciona de la siguiente forma: Para mover los números debes dar click encima de uno de ellos no debes mantener presionado basta con un simple click encima Con el mause te mueves por la imagen de los círculos y cuando estés en la posición que quieras debes presionar de nuevo un click sobre el numero no sobre la imagen En caso de que quieras eliminar uno de los números que moviste debes dar un dobleClick sobre este, con eso volverá a colocarse a la derecha en la lista. Ahora se qu
×
×
  • Create New...

Important Information

Privacy Policy