Jump to content

AlexanderS

Moderators
  • Content Count

    1,373
  • Joined

  • Last visited

  • Days Won

    56

AlexanderS last won the day on September 18

AlexanderS had the most liked content!

About AlexanderS

Profile information

  • Gender
    Hombre
  • Localización:
    Costa Rica

Converted

  • Campos
    ,
  • Mi versión de Excel:
    0

Recent Profile Visitors

6,048 profile views
  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
×
×
  • Create New...

Important Information

Privacy Policy