Saltar al contenido

Macros y programación VBA

Temas sobre la automatización de Excel utilizando macros y VBA. Errores de VBA. ¿No consigues que tus macros hagan lo que necesitas?

  1. Saludos, Estoy preparando un archivo el cual se encarga de recopila (acumular) información dìa a día de un determinado archivo y va a uno general, una vez ya copiado aplico formulas las procesa, las selecciono y las convierto en valores, el còdigo de una parte (que es casi todo) es el siguiente: 'RegistrosActuales (es desde donde se quedo el anterior ingreso y lo nuevo continúa) ' Entonces tenemos esto 'Agrega fecha de actualización Range("g" & RegistrosActuales & ":g" & (Cells(1048576, 1).End(xlUp).Row)).Formula = Now() Range("g" & RegistrosActuales & ":g" & (Cells(1048576, 1).End(xl…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 1.1k visitas
  2. Hola a todos!!! Gracias por vuestra ayuda, que siempre me saca del apuro...:encouragement: Adjunto un libro: CLIENTES, que contiene 13 hojas, la 1ª hoja se llama FICHA CLIENTE y las 12 restantes van de ENERO A DIC. Las Hojas que corresponden a los meses del año, tienen listados de las facturas del mes correspondiente. Desde FICHA CLIENTE, introduciento código de cliente en la celda B6 recupero en forma de listado las facturas correspondientes a ese cliente de todos los meses del año (rango A18:L ). Ahora necesito ampliar la busqueda y producir dos listados nuevos, además de que todos los listado tienen que traer la información con hipervinculo para poder modificar da…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 2k visitas
  3. Started by lphant,

    Buenas noches; Quien me puede echar una mano, estoy intentando hacer una macro que me envié cierta celdas por mail y algo me esta fallando, me abre el correo y lo envía pero vació, no ingresa el contenido, el contenido me lo copia en lo primero que este abierto en ese momento. Os adjunto las lineas: On Error Resume Next Set parte1 = CreateObject("outlook.application") Set parte2 = parte1.createitem(olmailitem) parte2.to = "[email protected];[email protected]" 'parte2.CC = parte2.Subject = "asunto de mensaje" parte2.display Application.SendKeys "^v" parte2.send Set parte1 = Nothing Set parte2 = Nothing On E…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 1.1k visitas
  4. Started by nickmartinez,

    Saludos Compañeros recientemente cree una ribbon la cual funciona muy bien,pero al correr el archivo en otras pc donde se elimino office 2010 me arroja el siguiente error al iniciar excel :System Error &H8000FFFF (-21474181113) catastrophic error y luego Out of memory,se que el problema es al querer cargar la ribbon y que es por haber tenido antes office 2010 por que justamente en las 2 pc que me ha dado error han tenido office 2010 se elimino y se instalo el 2016,quiero preguntar si conocen la forma de solucionar este error sin necesidad de formatear la pc,gracias se los agradezco mucho si me pueden orientar. Me baje un desinstalador de office limpie los registros p…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 2.7k visitas
  5. hola que tal?, aqui de nuevo con mis dudas y esperando se me pueda auxiliar en esto y es que esta vez quiero hacer lo siguiente: Lo que Necesito hacer es que al estar escribiendo sobre un textbox (el cual obviamente esta dentro de un formulario) solo acepte: 1ro.- solo numeros o solo letras o los caracteres que yo desee 2do.- que al llegar al sexto caracter me ponga una " / " y posteriormente siga escribiendo solo y unicamente hasta el onceavo caracter. se que para poner la cantidad de caracteres permitidos es en la propiedad maxlenght, pero si quisiera saber manipularla mediante codigo No se si me di a explicar ponerdiagonalal5tocaracter.xls

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 2k visitas
  6. Started by axmug,

    Hola. Tengo hecha una macro muy sencilla cuyo objetivo es mostrar en otra hoja aquellas celdas que están en blanco. Este es el código: Public Sub blancos() Dim f As Integer Dim f_max, c_max As Long ActiveWorkbook.Worksheets("Hoja1").Copy after:=Worksheets("Hoja2") 'Para saber cuantas filas y columnas hay como maximo rellenas f_max = ActiveSheet.Cells.SpecialCells(xlLastCell).Row c_max = ActiveSheet.Cells.SpecialCells(xlLastCell).Column 'Para situarse en la celda Range("AE").Select 'Cells(4, 10).Select 'Rows(4, 10).Select For f = 4 To f_max If ActiveCell.Value <> "" Then ActiveCell.EntireRow.Delete If ActiveCell.Value = "" Then ActiveCell.Offset(1,…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 1.6k visitas
  7. Started by lphant,

    Buenas tardes a tod@s; Esta tarde me ha surgido otro problemita que …..por más vueltas que doy no sé cómo solucionarlo (si se puede, que me está oliendo que no ). Esto haciendo una consulta de Access a Excel por SLQ contando con 2 condiciones, la condición 1 es si tiene el dato xx y la condición 2 es que no tenga el dato xx, el problema que tengo es que en la columna de la condición 2, hay celdas en blanco que debería de contar y no las cuenta, solo cuenta lo que tiene dato. He probado de varias formas pero no doy con ello. Os adjunto la línea que tengo. Query = "Select count (Motivo) from consulta where Motivo ='CIERRE ROTO' And tipo_hnc …

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 1.4k visitas
  8. Started by jeladio,

    Hola amigos: Acudo a uds. solicitando su ayuda, tengo lo siguiente una lista en una hoja llamada "listado" en donde tengo dos columnas la primera con el ID y la segunda con el NOMbre del producto; en otra hoja llamada "Indice" tengo en la celda "A2" un listado de numeros separados por comas (,) con las cuales quiero hacer lo siguiente: Hacer un tercer listado (hoja llamada "lista final") en la cual me muestre solo los productos correspondientes a los numeros contenidos en la celda "A2" de la hoja indice. (adjunto un ejemplo de lo quiero hacer con dicho macro) Espero haberme dado a entender saludos filtrar.xls

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 970 visitas
  9. Estimados amigos, acudo a ustedes solicitando por favor su ayuda con una macro, la cual necesito que compruebe la fecha de nacimiento y genere un número aleatorio que no se repita ni en próximas generaciones de aleatorios hasta que se agoten los números y vuelva nuevamente el ciclo, es decir: Que compruebe en el rango (“C6:C20”) la fecha de nacimiento y si: =< 30 años genere en la columna (“A”) un número aleatorio del 1 al 100 que no se repita =>31 hasta los 40 genere en la columna (“A”) un número aleatorio del 101 al 200 que no se repita Y mayores de 40 genere en la columna (“A”) un número aleatorio del 201 al 300 que no se repita Una vez que no haya más núme…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 797 visitas
  10. Buenas tardes eruditos del foro ?, mi duda esta vez es medio difícil de explicar: quisiera que en una celda, llamémosla (celda 2), vinculada a la (celda 1), quede fijo el ultimo valor que tenía la (celda 1) antes que se le coloque el valor 0 a dicha celda (celda 1). Subo un ejemplo de la tabla con otra expiación, espero que puedan comprender Saludos Jose Libro1.xlsx

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 852 visitas
    • 1 seguidor
  11. Buenas tardes, tengo una macro copiada de un ejemplo que funciona perfectamente. Usa un formulario para capturar datos a una hoja. El problema está cuando convierto el rango normal en una tabla. Aquí ya no me numera la columna A y se desplaza al final de la tabla. Agradecería me echasen una mano. Adjunto envío archivo. prueba.xlsm

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 768 visitas
    • 3 seguidores
  12. Started by Pirtrafilla,

    Hola a todos de nuevo. Tengo un problema con un autofiltro. Necesito filtrar 3 columnas, de "F" a "K" y el criterio se encuentra en la columna "K" que es la columna 3 del criterio. Lo que necesito es copiar los datos filtrados pero solo de las dos primeras columnas, no las 3 columnas, y llevármelas a otra hoja. Por ahora lo que consigo es llevarme las 3 columnas y no se llevarme solo las 2 columnas primeras del autofiltro. Este es el código que tengo. Sub ExportarTecnicos() Application.ScreenUpdating = False: Application.DisplayAlerts = False ' Dim wsPxA As Worksheet, wsGrupos As Worksheet Dim rngData As Range Set wsPxA = Sheets("PxA"): Set wsGrupos = S…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 793 visitas
    • 2 seguidores
  13. Hola compañeros, Llevo un tiempo con un problema en el siguiente código, y no sé cómo solucionarlo. Private Sub Worksheet_Activate() Cells().Columns().Ungroup ' 1 Columns(4).Group ' 2 Columns(5).Group ' 3 Me.Outline.ShowLevels ColumnLevels:=1 ' 4 End Sub Me gustaría insertar un condicional en la primera sentencia tal que "If Cells().Columns().Group = True Then Cells.Columns.Ungroup", para de este modo ejecutar el resto de las sentencias (la segunda, tercera y cuarta) sin problemas. Pero esa instrucción me da problemas... En otras palabras, un evento tal que al activar la hoja, se agrupen la…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 1.8k visitas
  14. Started by leserasfea,

    Amigos, buenas tardes. Quisiera contar con su ayuda para hacer que en la columna B, se rellene desde la ultima celda utilizada con el numero 1 consecutivo hacia abajo segun indica la celda I3 que describe el numero final del relleno Ejemplo: Ultima celda utilizada B7 con el numero 500 Celda I3 dice 5, se aplica el macro y el resultado final es: B8 = 1 B9 = 2 B10 = 3 B11 = 4 B12 = 5 Muchas gracias.

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 2.8k visitas
  15. Hola a toda la comunidad, espero me puedan ayudar a un problema al parecer simple, pero no he podido darle solución a esto: Tengo un checkBox1 con esté código que al activarlo y me salga el mensaje de Ok y Cancel, al presionar el botón OK, se ejecuta la macro "ModificarFicha" (Hasta ahí todo bien).... Private Sub CheckBox1_Click() Dim respuesta As Variant respuesta = MsgBox("¿Desea registrar ahora la ficha?" + Chr(13) + "¿Desea proceder?", vbOKCancel) If CheckBox1.Value = 1 And _ respuesta = vbOK Then ModificarFicha End If End Sub El problema resulta cuando ya tengo el checkbox1 activado y ya se ejecuto la macro "ModificarFicha" porque presioné Ok. en mi f…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 15.4k visitas
  16. Started by dragonniko,

    Estimados. Estuve leyendo varios post y no logro encontrar especificamente con una solución. En primer lugar necesito mandar un email con una macro con un contenido de excel. Logro armar los distintos emails para cada destinatario especifico, ponerle un subject, pero no logro poner el cuerpo del mensaje. NO necesito enviar una celda sola, ya que con .body = Range (Celda) lo envia, sino que necesito que envie toda una tabla entera. Probe varias formas y no logro dar con la correcta. .body= Range("A1:I11") .body= Range("A1:I11").Value .htmlbody=... También he intentado con lo siguiente: Sub EnviarEmail(Destinatario As Variant) With ActiveSheet.MailEnvelope …

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 4k visitas
  17. Started by carlos178,

    Buenas noches a todos; Necesito hacer funcionar varios combobox dependientes en un userform, (lo tengo hecho ya mediente validación de datos), pero no me sirve, necesito que sea en un userform. No se como se puede hacer mediante VBA, pero es que además, los datos de la hoja que están repetidos se han de mostrar además en el userform como únicos. He subido un ejemplo y una captura de pantalla de como debería funcionar. A ver si me podéis echar una mano, compañeros. Saludos!!! COMBOBOX DEPENDIENTES.xls

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 936 visitas
  18. Started by Eduado09,

    Tengo en mi libro datos informacion en la columna A,M, N...hasta la DL en la columna A datos asi tengo 3972616 3972616 3972616 3975130 3975130 3975130 3976599 3976599 Y apartir de la columna M hasta DL tengo datos asi: A M N O CD DA DL 3972616 1% 3972616 75% 3972616 84% 3975130 88% 3975130 93% 3975130 12% 3976599 2% 3976599 9% Me gustaria por medio de una macro o funcion que se pudieran sumar las celdas una por una y asi cada vez que exista valores diferentes ejemplo asi seria el resultado, el resultado que lo sobreescriba de …

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 900 visitas
  19. HOLA! en mi hoja "INICIO" tengo la celda B8 con validacion de datos cuyas opciones son tres: celda en blanco, "SI" Y "NO". Quisiera poner un boton que apareciera una vez seleccionada la opcion "SI" o "NO" y que me dirija a la hoja "CALCULOS". SOLO TENGO LO SIGUIENTE: Private Sub CommandButton1_Click()Sheets("CALCULOS").Visible = TrueSheets("CALCULOS").Select Range("c2").SelectSheets("INICIO").Visible = FalseEnd SubEL RESTO NO SÉ COMO HACERLO. ¿¿ME PUEDE AYUDAR, POR FAVOR??(( Cabe mencionar, que en la misma hoja INICIO puse otro boton (IRALINEALIQUIDA) con un macro que me dieron y me resultó perfecto para lo que necesitabaque es el siguiente:Private Sub iralinealiquida_Cli…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 11.3k visitas
  20. Started by Galactico,

    hola buenas, he estado hace un tiempo aprendiendo y desarrollando macros en vba para realizar scraping en paginas web, en una de las paginas que utilizo apareció esta protección del sitio, el posible bypasear con vba? he leído que se puede hacer con phyton pero no conozco ese lenguaje el mensaje que dice es Cheking your browser before accessing "sitio" dejo pantallazo https://ibb.co/wp4mwzP en caso de no ser posible, quizás ya sea momento de aprender otro tipo de lenguaje agradezco mucho la ayuda

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 905 visitas
    • 2 seguidores
  21. Started by juan carlos vilchez,

    Muy buenas, tengo un formulario donde se debe de actualizar datos de una tabla mediante un botón, el problema que tengo con el código es que solo me corre cuando actualiza un celda pero cuando añado para que me actualice mas celdas de una fila me sale el error 1004. Agradeciendo de antemano por su ayuda. Private Sub BT_Modificar_Click() Dim fila As Object Dim linea As Integer Dim MENSAJE As String valor_buscado = Me.TXT_Cod Set fila = Sheets("BASEdeDATOS").Range("A:A").Find(valor_buscado, lookat:=xlWhole) linea = fila.Row MENSAJE = MsgBox("¿ESTÁS SEGURO DE EDITAR LOS DATOS?", vbQuestion + vbYes…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 1.7k visitas
  22. Saludos.. La inquietud va por ver el form en la barra de tareas al esconder o hacer invisible el excel y solo visualizar el form La otra es como puedo crear mis propios botones de maximizar y minimizar un form. Muy agradecido por sus aportes... EJEMPLO.rar

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 3.3k visitas
  23. Started by Benito Bartolomé,

    Hola a todos; Estoy tratando de pintar unos labels vinculando los textBox con los spinButtons, de forma estática lo consigo pero lo que quería conseguir es dar cierto dinamismo ayudándome de dichos spinButtons, Os lo muestro en este gif lo que tengo hasta ahora. Saludos y buen finde a todos. MIntervalos.xlsm

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 728 visitas
    • 1 seguidor
  24. Hola amigos, necesitaría que cuando la fecha actual coincidiera con la fecha que he asignado a una celda me saltara algún tipo de aviso, ya sea de outlook del mismo excel si es que tiene alguna opción similar y no se como hacerlo o si es posible hacerlo, que a lo mejor estoy pidiendo que me haga mucho, no se. Gracias de antemano.

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 939 visitas
  25. Buena Compañeros Deseo crear un macro que le lea un archivo en excel y me copia el rango de celdas hacia abajo la cantidad de veces como haya información en la columnas de al lado, espero haber sido claro, adjunto archivo con el ejemplo de la macro que necesito Gracias Fdotrujillo Libro1.xls

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 573 visitas

Información básica de protección de datos

  • Responsable: Sergio Andrés Celemín
  • Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.
  • Legitimación: Consentimiento del interesado.
  • Destinatarios : Hetzner Online GmbH.
  • Duración: Mientras se conserve este post o hilo en la comunidad, o decidas eliminar el comentario.
  • Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso, rectificación, supresión, oposición y demás derechos legalmente establecidos a través del email [email protected]

Información adicional: Encontrarás más información en la política de privacidad.