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. Llevo desde ayer dándome calabonazos contra la pared tras tirarme un par de días implementando una nueva hoja en mi lista, tras ver que todo funciona en la hoja en cuestión bien y hace lo que quiero, reviso el código para que todas las llamadas sean echas con sheets ("Nombre de la Hoja") y asi poder usar el userform desde cualquier hoja el caso es es que para insertar una celda uso la instrucción que me proporcionasteis en otro post y siempre la inserto en al misma posición. Sheets("Hoja Datos").Rows(4).Insert luego me rellena con los datos que tengo en los txtbox y combobox en sus respectivas celdas y me reordene por orden alfabetico a partir de la f…

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 1.1k visitas
    • 1 seguidor
  2. Started by ppladino,

    Buenos días amigos, tengo el siguiente inconveniente con una macro que he desarrollado; resulta que cuando coloco el formulario como no Modal, es decir la propiedad es ShowModal = False, esto para que se puedan utilizar otros libros de excel, entonces el cursor se pierde al hacer un alt+tab, haciendo que cada vez se tenga que dar clic sobre el formulario para llenarlo. Si me pueden ayudar como puedo solucionar esa parte les agradezco infinitamente.

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 684 visitas
    • 1 seguidor
  3. Started by muyayito,

    Buenas foro. Estoy intentnado aplicar el comando attrib /s /d -r -h -s *.* en la unidad d: y no se como hacerlo para insertar dos comandos, con uno solo no tengo problema Call Shell("cmd.exe /S /K" & "D:", vbNormalFocus) Como seria para justo despues aplicar el comando attrib?

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 3.6k visitas
    • 1 seguidor
  4. Started by pinoji,

    Buenas tardes Foristas, espero se encuentren bien de salud. Necesito la ayuda de ustedes (una vez más). Voy a extenderme un poquito, pero creo necesaria la explicación. Ofrezco disculpas de antemano. Por mi país, cuando a una persona le vienen encima muchas cosas malas decimos, “A perro flaco todo lo que le caen son pulgas…” y algo parecido me ha tocado. Una de mis compañeras de trabajo está embarazada y tiene problemas de amenaza de aborto y la ingresaron en una clínica, hasta que dé a luz y entre una cosa y otra esto se tomará 1 año y tanto y me ha tocado hacer su trabajo, lo malo es que con el mismo salario que tengo hasta ahora (nada de aumento). Bue…

    • 0

      Reacciones de usuarios

    • 33 respuestas
    • 1.8k visitas
    • 2 seguidores
  5. Started by Luis Heredia,

    Saludos amigos del foro. Vengo para solicitarles ayuda para saber como puedo hacer una macro. La situacion es la siguiente: Tengo un libro donde hay 12 hojas, una para cada mes del año, hay otra hoja donde tengo las tablas que uso para crear unas listas, cuando en alguna de las listas, en cualquiera de las hojas de los meses, requiere que se le agrege un nuevo campo, tengo un boton con una macro que me dirije a la hoja de las tablas y alli agrego la celda en la tabla correspondiente, ahora necesito hacer la macro que me devuelva justo a la hoja del mes de donde vino, ahi es donde no se como hacer, es decir, si desde la hoja Enero, fui a la hoja de las tablas, que al …

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 457 visitas
  6. Hola intento general este resultado. Según la imagen la diferencia de tiempo es 02:16:26 . HH:mm:ss. El problema es que no sé como generar ese resultado sin separar las horas de la fecha. Aquí los problemas, no puedo separar o dividir las horas en una columna y las fechas en otra columna. También la fórmula debería expresar si la diferencia es en días.. cuántos días son más horas y minutos... Alguien sabe como expresarlo de esa forma?

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 816 visitas
  7. Buena tarde. Digamos que tengo en G2 diferentes números de semana del año, empezando en la 1, saltando a la 5 en G3 y la 21 en G4, necesito insertar filas entre cada uno de los datos, insertando una fila con el número de semana 2 en G3, después el 3 en G4, 4 en G5, y así consecutivamente hasta el 5, después hasta el 21, etc. Respetando los números que ya tengo y tomando en cuenta solo de 1 al 52 que son las semanas del año. Ayuda por favor! De antemano muchas gracias.

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 1.2k visitas
    • 1 seguidor
  8. Started by jotaeme,

    Saludos a la comunidad y espero estén todos bien Tengo el siguiente impasse.... Sheets("RESUMEN CC").Shapes.Range(Array("Drop Down 1", "Drop Down 2", "Drop Down 3", "Button 9", "Button 8", "Group 14", "Rectangle 1")).Select Funciona perfecto ...pero...al ejecutar la aplicación en algún pc; en que el nombre del objeto (Rectángulo 1) está en español, me marca error. Hay alguna instrucción en VBA que pueda indicarme el lenguaje en que están los objetos ?? gracias de antemano

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 599 visitas
  9. Started by Nodoka,

    Buenas estoy puliendo unas cosillas en mi lista de excel y me ha surgido esta duda, pongo en situación mi userform carga los valores de cada celda al desplazarme, ahora bien si yo al pulsar un botón en una celda este me escribe varias cosas en diferentes celdas de la misma fila que activan según los datos que se hayan introducido en esas celdas me activa unos label con unas imágenes determinadas determinados en el formulario, pero para que esos label se activen el userform debe refrescarse sobre la linea en al que me encuentro, para ello uso este codigo que tras pulsar el botón e introducir los datos me mueva de derecha a izquierda la celda de la fila en cuestión sele…

    • 0

      Reacciones de usuarios

    • 8 respuestas
    • 1.4k visitas
    • 3 seguidores
  10. Hola tengo una duda si uso el mismo patrón de fórmula en vba y lo replicó en 30 fórmulas diferentes en una misma página, eso puede ocasionar que excel se cierre o que el documento sea muy lento ?... No sé si eso influye.. Aquí un ejemplo de la que uso... RANGO = Range("A" & Rows.Count).End(xlUp).row With Range("A2:A" & rango) .Value = _ "=XLOOKUP(A8,TABLE1[Orden],TABLE1[semana], )" .Value = .Value End With Esta misma fórmula solo modifico la fórmula entre las comillas por countif o sumifs o xlookup.. cuál es el problema aveces excel se cierra porque el código queda en una p…

    • 0

      Reacciones de usuarios

    • 4 respuestas
    • 671 visitas
    • 1 seguidor
  11. Buenas ? A ver si me podéis echar una mano, tengo un formulario que lo llamo desde cualquier hoja del libro y quiero que en una hoja fija y en una fila fija me inserte una fila entera, sin que el formulario cambie independiente de la hoja en la que em encuentre, es decir copie el formato de su fila superior lo desplace hacia abajo y lo copie en el huco desplazado. Sheets("Hoja Fija").Select Rows("4:4").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove con esto me lo hace lo que quiero , pero claro me lleva a la hoja en cuestión, y no es lo que necesito, ya que el formulario que lo hace solo es para mirar los datos de una tab…

    • 0

      Reacciones de usuarios

    • 6 respuestas
    • 1.6k visitas
    • 2 seguidores
  12. Invitado CSI1981
    Started by Invitado CSI1981 ,

    Buenos díasEstoy trabajando en un libro el cual consta de 3 hojas.- Info desplegables: es la hoja auxiliar donde coloco los datos para desplegables y otros datos necesarios- Planing: es la hoja donde determino el trimestre que voy a trabajar y es donde se va reflejar la información que se plasme en la hoja "info dic-ene-feb"- Info dic-ene-feb: en esta hoja ingreso la información requerida. En esta hoja las columnas J y K se obtienen de cálculos auxiliares. Me sirven para determinar si la reserva es un ingreso del trimestre anterior o en su defecto la salida del huésped es en el trimestre que sigue. Para que la macro me funcione, realice cálculos auxiliares para determinar…

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 628 visitas
  13. Started by questionAbout,

    Hola alguien me puede ayudar con esta fórmula en vba.. intento que la columna Ade la página 1, se devuelva a la página 2, columna A2. Básicamente así es como lo intento hacer. Set myrng = sheets ("página1").range ("a:a") Ser este = sheets ("pagina2").range ("A2") Myrng.advancedfilter actiom:= xlfilyercopy, _ Criteriarange:=myrng, copytorange:=rstd, Unique := true El problema con esto es que me devuelve el título de la página A y solo quiero el resultado.. alguien me puede por favor corregir?

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 921 visitas
    • 1 seguidor
  14. Started by Benito Bartolomé,

    Buenos días a todos; -Con el procedimiento que adjunto obtengo la ruta de una imagen y la almaceno en la caja de Texto. Si a la hora de elegir una imagen le doy a botón cancelar me devuelve "False" a la caja de texto. ¿Se puede corregir para que cuando suceda el "txtAdjunto" quede vacio? He estado analizando otros procedimiento semejantes y ocurre lo mismo. Sub CargarImagen() Dim vImage As String vImagen = Application.GetOpenFilename("Archivos JPG PNG BMP (*.jpg*;*.png*;*.bmp*), *.jpg*;*.png*;*.bmp*") If Not vImagen = "False" Then Me.txtAdjunto = vImagen Else MsgBox "No ha seleccionado nigu…

    • 0

      Reacciones de usuarios

    • 3 respuestas
    • 965 visitas
  15. Buenos dias a todos. Estoy intentando desde excel meter datos en una página web, y me encuentro con dos combobox con el mismo classname. En el primero meto los datos bien, pero en el segundo, no se como hacerlo, no veo el id o alguna otra forma de identificarlo. Sub vuelos() Dim IE As Object Set IE = CreateObject("InternetExplorer.application") IE.Visible = True IE.Navigate "https://www.google.com/travel/flights?tcfs&ved=2ahUKEw jD1eu2kcH6AhWJ2tUKHdTsAGIQyJAB egQIABAY&ictx=2&authuser=0" Do DoEvents Loop Until IE.ReadyState = 4 Dim inputfield As Object Set inputfield = IE.Document.getElementsByClassName("II2One j0Ppje zmMKJ LbIaRd") If inputfield.Length >…

    • 0

      Reacciones de usuarios

    • 3 respuestas
    • 675 visitas
    • 3 seguidores
  16. intento comparar la pagina1 columna (m) con la pagina2 columna (c), el objetivo es enviar a la pagina3 el resultado de aquello que esta en la pagina1 pero no esta en la pagina2. estoy trabajando en este codigo pero no se si debo cambiar de codigo o solo puedo agregar algo mas que diga si encontraste la diferencia entre pagina 1 y pagina 2, devuelve el resultado en la pagina 3. Private Sub ejemplo() 'Define Fields Dim iR As Double, oRw As Double Dim iRow_M As Double Dim s1 As Worksheet, s2 As Worksheet Dim s3 As Worksheet Set s1 = ThisWorkbook.Sheets("pagina1") Set s2 = ThisWorkbook.Sheets("pagina2") Set s3 = ThisWorkbook.S…

    • 0

      Reacciones de usuarios

    • 7 respuestas
    • 561 visitas
    • 1 seguidor
  17. Started by pinoji,

    Buenos días colegas, espero su salud sea excelente. Colegas, en esta ocasión venga a hacer una consulta para tratar de resolver un problema que se me ha creado. No sé si ustedes recuerdan un Proyecto que hice con la invaluable ayuda de mucho de ustedes, fue el de Pre-Nóminas para mi esposa. Al día de hoy el sistema funciona de manera eficiente, a excepción de un par de “cosas” que no son nada importante, pero cuál es el problema. A mi esposa le cambiaron el Ordenador y le dieron uno que tiene solamente 2 GB de RAM, así que imagínense lo lento que puede llegar a hacer, pero lo fundamental es que el Sistema no abre y da el error: “Error Catastrófico…memoria ins…

    • 0

      Reacciones de usuarios

    • 3 respuestas
    • 552 visitas
    • 1 seguidor
  18. Buenos días colegas. Espero se encuentren bien de salud. Tengo un pequeño problema. En uno de mis proyectos puse un código para que al cierre del día 30/09/2022 el libro no pudiera abrirse y no me di cuenta de eso, por lo que hoy no pude entrar al sistema y no sé como puedo hacer para poder lograr llegar hasta VBE para modificar la macro. No puedo cambiar la fecha al sistema porque eso es a través del informático y tampoco está hoy acá y necesito de urgencia poder acceder al Proyecto. Gracias de antemano. Un abrazo Pino

    • 0

      Reacciones de usuarios

    • 7 respuestas
    • 750 visitas
    • 2 seguidores
  19. Quiero copiar solo el resultado desde una macro que tiene formulas por día. Cada día la información se actualiza y la forma va a buscar x, hace el procedimiento y devuelve el resultado. Esto lo hace varias veces por día, todos los días. Por lo que a veces se truene el excel al querer manipular los resultados. Por ello siento que sería mejor pasar solo los resultados a un nuevo libro, una vez que la formula tenga dicho resultado. He visto que se pueden copiar datos condicionalmente, la condición aquí sería que la formula esté resulta. O tal vez hay otra forma más fácil pero no la encuentro.

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 397 visitas
    • 1 seguidor
  20. Started by Benito Bartolomé,

    Hola a todos y todas; -A ver si me podéis echar un cable. Estoy intentado pasar el nombre del formulario por parámetro a un procedimiento que tengo en un módulo y me genera error y no sé porque. Si la macro la ejecuto desde la subrutina del formulario va bien en cambio desde el módulo no va y no sé porque. Sub EnviarHojaActiva(vForm As UserForm) 'Sub EnviarHojaActiva(UserForm1 As UserForm) <---Tampoco va Dim RutaTemporal As String, NombreArchivo As String Application.ScreenUpdating = False Application.DisplayAlerts = False NombreArchivo = ActiveSheet.Name RutaTemporal = VBA.Environ("temp") & "\" NombreArchivo = RutaTemporal & NombreArchivo …

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 603 visitas
    • 1 seguidor
  21. Hola a todos; Os dejo una macro donde al iniciar el formulario se carga la imagen desde una Url. -Primero la descarga a una ruta y después la elimina. Dejo aquí la macro por si le interesa a alguno. Saludos. MCargarImagenUrl.xlsm

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 1.4k visitas
  22. Started by Emi,

    Hola como andan!, me estoy iniciando en el lenguaje de VB y me surgió una duda al momento de realizar una tarea. El control en cuestión consta en lo siguiente: la hoja de Excel consta del día del 1 al 31 en las columnas de la hoja y en la fila de debajo se coloca un 3 o se deja vacía dependiendo de si ese día se realizo el control pertinente (por ejemplo si en el día 12 hay un 3 es porque ese día se hizo el control, si no hay nada, no se hizo). La cuestión es que el control se debería hacer cada MAXIMO 7 días (es posible que se haga cada menos días). Lo que quiero hacer es un macro que analice los datos de control y si un día que debería haberse hecho control (ósea si pas…

    • 0

      Reacciones de usuarios

    • 3 respuestas
    • 660 visitas
    • 1 seguidor
  23. Buenas tardes, hice este código en VBA, consiste en abrir un dialogo para seleccionar un archivo, después copiar la info de la tabla que va de "C6" a "K" la fila K varía a veces más o menos filas ocupadas... después pegar la info en una tabla de otro libro, de igual manera empezando en "C6" o en la última fila que se encuentre texto o información. El problema es que copia y pega todo el rango que puse, "C6:K125" inclusive las filas vacías y después al querer pegar en la ultima fila, aparece el error '1004 en la línea resaltada del código, creo que este ultimo está mal hecho. Alguien sabe como arreglarlo? ______________________________________________…

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 568 visitas
  24. Started by Pirtrafilla,

    Buenos días a todos. Necesito convertir una celda donde tengo una fecha en una cadena de caracteres. El problema es no quiero que elimine los 0 a la izquierda. Por ejemplo 01/07/2022 debería convertirse a 20220701, sin embargo solo consigo que se convierta en 202271. Este es el código simpe que he puesto y que luego lo he de adaptar con bucles y demás. La fecha la tengo en la celda B1 y he de convertirla en la celda B2 Sub fecha_inicio() anyo = Year(Sheets("Repsol").Range("B1")) mes = Month(Sheets("Repsol").Range("B1")) dia = Day(Sheets("Repsol").Range("B1")) Sheets("Repsol").Range("B2") = anyo & mes & dia End Sub Gracias.

    • 0

      Reacciones de usuarios

    • 4 respuestas
    • 925 visitas
    • 1 seguidor
  25. Started by pinoji,

    Buenas tardes colegas. Espero se encuentren bien de salud. En un Proyecto que terminé hace un par de meses me está dando el Error 91 en Tiempo de ejecución... Este Error lo está dando en el FrmRetenciones (cuando se va a Cargar). Dicho Formulario prácticamente lo hizo el profesor Antoni a solicitud de una ayuda de mi parte. Trabajaba perfecto hasta hoy, que traté de hacerle una modificación al Sistema, porque necesito que las cuentas que Agregue al Clasificador General (FrmACuenta) en el Rango de las 460 001 a la 460 007 me las imprima en la HojaBase (E28) y en la Hoja Comprobante1 (A16). Estuve revisando y no me doy cuenta de dónde está el error. Por…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 2.9k visitas
    • 2 seguidores

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.