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. Hola!! A ver si alguien me puede ayudar con una macro, necesito transponer los registros que están contenido en una celda que tienen un separador "|". Pongo un ejemplo: Inicialmente tengo esto 2 columnas: refe productos A 1|2|3|4|5 B 6|7 Y quiero que la macro en cuestión me lo haga así: refe productos A 1 A 2 A 3 A 4 A 5 B 6TRANSPONER CADENA TANTAS VECES SE REPITA.xlsx B 7 Muchas gracias de antemano. Un saludo.

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 629 visitas
  2. Started by Galactico,

    buenas, estoy tratando de reducir el tamaño del siguiente código If InStr(1, c, "Out") Or InStr(1, c, "out") Then c.Value = "NS" Else c.Value = c.Value If InStr(1, c.Offset(0, 1), "Out") Or InStr(1, c.Offset(0, 1), "out") Then c.Offset(0, 1).Value = "NS" Else c.Offset(0, 1).Value = c.Offset(0, 1).Value If InStr(1, c.Offset(0, 2), "Out") Or InStr(1, c.Offset(0, 2), "out") Then c.Offset(0, 2).Value = "NS" Else c.Offset(0, 2).Value = c.Offset(0, 2).Value If InStr(1, c.Offset(0, 3), "Out") Or InStr(1, c.Offset(0, 3), "out") Then c.Offset(0, 3).Value = "NS" Else c.Offset(0, 3).Value = c.Offset(0, 3).Value básicamente es reemplazar texto de una ce…

    • 0

      Reacciones de usuarios

    • 3 respuestas
    • 1.1k visitas
  3. Buenas tardes... por favor necesito ayuda sobre el siguiente tema: tengo una macro que corta y transfiere datos en una hoja, sin afectar el formato de la celda de origen. En la misma hoja me funciona de maravillas, pero no puedo transferir datos A OTRAS 7 HOJAS SIMILARES, en los mismos rangos. Cuando lo intento me copia los datos en la misma hoja de origen. Les agradeceria me pudieran ayudar con esto. Sub MigrarPUB() ActiveCell.Offset(0, 0).Range("B1:GO1").Select Selection.Copy rgoOrigen = Selection.Address 'seleccionar la primer celda de destino Set rgoDestino = Application.InputBox("Haga clic en lugar de destino", Type:=8) 'me selecciona …

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 894 visitas
  4. Buenos dias, expertos tengo un formulario que registro, modifica, elimina datos a la vez muestra un listado de datos en en listview la pregunta es si por medio de un combobox seleccione los encabezados de cada columna de datos y escribir en un textbox para lugo filtrarlos y asi cada vez que escoja del combobox y escriba en la caja de texto me filtre los datos. Muchas gracias a todos... por favor adjunto el archivo. Control Protocolos.xlsm

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 866 visitas
  5. Hola a todos; -Me habían pasado una macro que adjunto en la que se puede editar desde el listbox. Lo que no se modificar es lo siguiente: Abro el formulario, selecciono desde el listbox el registro a seleccionar y este lo pasa a los textBox. Cuando presiono el botón editar se edita el registro pero me lo pone de primero en la hoja. Yo lo que quiero es que quede en la hoja en la misma fila y no me lo mueva de posición. Adjunto un video explicando el tema: Video: EditarListBox Un cordial saludo para todos. EditarListBox.xlsm

    • 0

      Reacciones de usuarios

    • 3 respuestas
    • 2.8k visitas
    • 1 seguidor
  6. Hola amigos de AE, estoy tratando de unificar dos macros en una sola ya que tienen los mismos eventos pero no logro hacerlo. A ver si me pueden dar una mano. La macro fue creada por Haplox y funciona a la perfección, pero me he dado cuenta que la finalidad de la macro también debe aplicarse a las columnas E y F de la hoja LISTADO GENERAL en función de los datos reflejados en la columna D (DATO 4) de la hoja COLORES. Es decir, por ejemplo, el valor reflejado en D5 correspondiente a SUB AMARILLO de la hoja COLORES, debe actualizarse de manera automática cada vez que este valor cambie. Cabe señalar, que D5 y siguientes se actualiza automáticamente de la hoja AMARILLO y …

    • 0

      Reacciones de usuarios

    • 9 respuestas
    • 3.3k visitas
  7. Started by 6luishao6,

    Buenas tardes una consulta como puedo hacer una macro que al momento de ingresar estos datos (del 1 al 100) en la celda me convirtiera al dar enter automáticamente, entre los rangos de 1 a 5: En la hoja A1 coloco 50 pero automáticamente debiera aparecer 3, como esta en la descripción de abajo. De 1 punto a 11 puntos * 0,05 = 1 punto De 31 puntos a 49 puntos * 0,05 = 2 puntos DE 50 a 69 puntos *0,05 puntos = 3 puntos DE 70 puntos a 89 puntos *0,05 = 4 puntos DE 90 puntos a 100 *0,05 = 5 puntos La fórmula la tengo en una celda pero no hay espacio en mi hoja de impresión por eso deseo que haga esa conversión automáticamente al momento de i…

    • 0

      Reacciones de usuarios

    • 7 respuestas
    • 1.3k visitas
  8. Started by PATILARGO,

    Buenos dias y espero que tod@s esteis bien con la situacion en la que nos encontramos, llevo tiempo trabajano con una plantilla para llevar el control de un turno de trabajo, despues de intentarlo no consigo que indicando la fecha que quiero buscar en la hoja TURNO DIARIO , me rellene con el nombre de las personas que trabajan de MAÑANA (M), TARDE (T) y NOCHE (N)., esta necesidad es debido a que muchos compañeros cambian turnos y asi poder saber quien entre en cada turno de trabajo.Plantilla de Servicios5.xlsm Muchas gracias de antemano y sobre todo seguir asi por que gracias a este foro muchos estamos descubriendo un mundo apasionante.

    • 0

      Reacciones de usuarios

    • 8 respuestas
    • 1.7k visitas
    • 1 seguidor
  9. Started by Benito Bartolomé,

    Buenas tardes o días a todos; -Como puedo configurar cuatro textBox para que sólo me deje introducir 4 dígitos en y al acabar de anotar el último dígito en la caja pase al siguiente textBox y así sucesivamente hasta que se complete el último y una vez completado este me habilite un botón. Adjunto macro y video explicativo: video: salto entre textBox Saludos y gracias de antemano. Saltos.xlsm

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 1.1k visitas
    • 1 seguidor
  10. No consigo sumar una columna de horas de un listbox, cuando estas superan las 24 horas, alguien que me oriente ? Horario.xlsm

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 2.5k visitas
    • 1 seguidor
  11. Started by NAB_20,

    Buenas noches, estoy haciendo el código de una macro y pese a que estoy consiguiendo que "funcione" no estoy contento con el código. En la macro "SumaSiFrutaVendedor" la columna de la fruta es dinámica y nos podemos encontrar que en ocasiones haya 3 productos como 10 diferentes. Me gustaría conseguir que cuando inserto la línea del "sumIfs" sea dinámica y se adapte al rango de la cantidad de frutas diferentes, lo estoy pensando, pero no veo como ahorrar líneas de la macro... Estoy empezando con el vba y ando perdido cualquier ayuda será bienvenida para seguir aprendiendo. Saludos PruebaVendedor.xlsm

    • 0

      Reacciones de usuarios

    • 9 respuestas
    • 2.7k visitas
  12. Buen día amigos, este código no me fallaba antes y ahora dice ERROR 13 "no coinciden los tipos", adjunto el código Falla cuando quiero asignar un rango a una variable (Rango) , rango que también se arma con una variable (FilaCeldaActual) Les agradezco la ayuda de antemano. Sub prueba() Dim FilaCeldaActual As Long Dim Rango As String ' el tipo de variable la cambio por range long string y siempre falla FilaCeldaActual = ActiveCell.Row Rango = Range("A1:X" & FilaCeldaActual) MsgBox Rango End Sub macro prueba.xlsm

    • 0

      Reacciones de usuarios

    • 10 respuestas
    • 10.8k visitas
  13. Hola a tod@s De antemano agradecer por su tiempo en leer este tema que me complica. La siguiente macro se conecta a una base de datos de Access, realiza la consulta, me extrae la primera linea (encabezado); pero no el resultado. Aparece un mensaje de error " El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual" cuando esta en la siguiente linea: "Recordset.MoveFirst" . Hasta donde pude observar el problema esta en LIKE '801-??-88????-???' ya que si no tomo en cuenta esa parte la informacion extrae sin problemas. He intentado reemplazarlo con LIKE '801-**-88****-***' y de otras formas y siempre me da…

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 1.6k visitas
  14. Buenos días a todos; No me deja adjuntar la macro y por eso os pongo un enlace de un video. La macro consta de dos formularios con el siguiente código para el ComandButton1 del Form1. Private Sub CommandButton1_Click() UserForm2.Show UserForm2.CommandButton2.Visible = True End Sub Al ComadButton2 en el Form2 tiene la propiedad visible como false. Como se ve en el video cuando ejecuto la macro la primera vez no me muestra el botón "Mostrar" en cambio si la vuelvo a ejecutar si lo hace. ¿No se porqué? Siento no poder subir la macro para mayor entendimiento. Un cordial saludo. Video

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 1.3k visitas
    • 1 seguidor
  15. Started by gacg1310,

    Buenas Tardes desde Colombia: Acudo a ustedes por el ERROR 424 que me esta saliendo en mi formulario. Sale cuando digito una cedula que no existe en la hoja base. El al crear esa cedula la pega un registro abajo de la ultima cedula creada pero sale el error y me saca de excel. Agradezco su ayuda base 1.3.xlsm

    • 0

      Reacciones de usuarios

    • 3 respuestas
    • 1.2k visitas
  16. Buenos días Tengo que agradecer por toda la ayuda brindada en el pasado Tengo un proyecto de completar un archivo de Word con información de Excel para eso he tratado con el siguiente código: Sub A_crear_word() mi_carpeta = ActiveSheet.Range("A2") Set objWord = CreateObject("Word.Application") objWord.Visible = True objWord.Documents.Add Template:=mi_carpeta, NewTemplate:=False, DocumentType:=0 For I = 3 To 8 busqueda = ActiveSheet.Range("B" & I).Text remplazar = ActiveSheet.Range("A" & I).Text With objWord.Selection.Find .Text = busqueda .Replacement.Text = remplazar .Execute Replace:=2 End …

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 820 visitas
  17. Buenos dias días expertos, los solucito sus ayuda con una macro que necesto filtrar con cuatro celda en la hoja consoludado lo que acontinuación los explico. Necesito presentar en la pestaña “Consolidado” los periodos elegidos por el usuario, así como la suma de los componentes que conforman el PIB por tipo de gasto, para lo cual se deberán tomar en cuenta las siguientes consideraciones: El usuario deberá elegir una fecha inicial menor a la final y en caso elija el mismo año deberá elegir el trimestre de la fecha inicial menor al de la fecha final (en caso suceda lo contrario, el programa notificará al usuario con el mensaje “Debe ingresar las fechas correctamente” y…

    • 0

      Reacciones de usuarios

    • 8 respuestas
    • 1.1k visitas
  18. Started by jhosmar84,

    Hola estimados, me gustaría que me puedan ayudar con una macro para poder pasar datos a otra hoja con una condición. En la Hoja1 tengo una data, la cual me interesa solo la columna Modelos, cada vez que seleccione un modelo de mi data, lo pueda pasar a la hoja2 en la columna modelo, la selección es una celda a la vez, cuando copie y/o pase el dato de la celda a la hoja2, me vaya ingresando una tras otra hasta la celda C10, una vez que llegué a dicha celda, no me permita copiar mas y me salga un mensaje "ya no puede pasar otro dato, rangocompleto". Asimismo, en la hoja1 si yo selecciono otra celda que no este dentro de la columna Modelo, no me permita copiar, a…

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 779 visitas
  19. Hola y buen día a todos; He visto publicado en esta web el siguiente articulo: +10 columnas by Antoni Sería posible implementarlo a mi macro. Explico: En un formulario llamado "frm_Cobros" tengo un botón "btn_Filtro" el cual ejecuta una consulta sql a Access y devuelve el resultado a mi "listBox1". El problema que se me plantea es que no puedo mostrar mas de diez columnas. Como comenté al principio he visto en el enlace anteriormente mencionado una forma de conseguirlo pero el listBox se alimenta de datos del propio Excel y no de una consulta. Si no es viable esta opción, me serviría cualquier otra que cumpla la condición de mostrar…

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 1.2k visitas
    • 1 seguidor
  20. Buenos días, Busco hacer una macro que divida los valores de la columna "C" de la pestaña (2) entre el valor constante que le corresponde a esta planta , dato de la pestaña (1) , columna "A". Y devolver los valores resultantes de esta división en la columna "D", pestaña (2). Gracias por adelantado Libro1.xlsx

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 1.1k visitas
  21. Buenas noches. Estoy buscando una macro que realice la siguiente funcionalidad en un solo archivo. Una vez abierto el libro se ejecute automáticamente una macro la cual oculte todas las barras de los extremos (barra de menú, barra de herramientas, cinta de opciones, barra de formula, etc..). La dificultad de esto es que solo lo tiene que dejar las barras ocultas en un libro dejando el resto de libros abiertos y pendientes de abrir con las barras habilitadas. Únicamente he encontrado está macro la cual te oculta todos los archivos abiertos. por lo que no me sirve Private Sub Workbook_Open() Application.CommandBars("Worksheet Menu …

    • 0

      Reacciones de usuarios

    • 4 respuestas
    • 2.6k visitas
  22. Saludos a todos los foreros de esta comunidad, por sus conocimientos y ayuda que nos proporcionan a los iniciados al tema de las macros, haber si podeis aclararme que estoy haciendo mal. Si en el textbox9 introduzco la cantidad de 2566,45 en textbox13 debería dar la cantidad de 231,00 y no es así, me devuelve la cantidad de 0,23 (adjunto macro) Gracias por adelantado Private Sub TextBox9_Change() With Me.TextBox9 .Value = TextBox9.Value .Value = Format(.Value, "#,##0.00") End With TextBox13 = Format(Val(TextBox9.Value) * (0.090009), "#,##0.00") End Sub

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 786 visitas
  23. Buenos días Podríais ayudarme a refinar esta macro que realice con la grabadora. Gracias Sub MetodoAbrirLibro() Workbooks.Open "C:\Users\jctorres\Desktop\pruebas partes automaticos\C2020-0138_Carga_Horas (1)2.xls" Windows("PARTE DE TRABAJOS EE-II.xlsm").Activate Sheets(13).Range("A8:f78").Copy Windows("C2020-0138_Carga_Horas (1)2.xls").Activate Sheets("Personal").Range("A8:f78").PasteSpecial xlPasteValues Windows("PARTE DE TRABAJOS EE-II.xlsm").Activate Sheets(13).Range("F2").Copy Windows("C2020-0138_Carga_Horas (1)2.xls").Activate Sheets("Personal").Range("G3").PasteSpecial xlPasteValues Windows("P…

    • 0

      Reacciones de usuarios

    • 8 respuestas
    • 1.7k visitas
  24. Started by josuam,

    Buenas noches!! Tengo el siguiente código para validar el ingreso correcto de las fechas, pero también quiero poder controlar que si la fecha a ingresar es diferente a la actual se pida verificar si efectivamente se desea ingresar la fecha digitada o si se desea cancelar el ingreso, limpiando el textbox y dejando el setfocus en él. Private Sub Fecha_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Me.Fecha <> Empty Then If Not IsDate(Me.Fecha) Then MsgBox ("Introduzca una fecha correcta"), vbCritical Cancel = True Me.Fecha = Empty Else …

    • 0

      Reacciones de usuarios

    • 4 respuestas
    • 5.3k visitas
  25. Started by jeaa,

    Tengo una macro para combina celdas como yo necesito, pero esta macro solo esta definido con unos rangos de celdas pero yo necesito que cuando yo escoja cualquier rango de celdas de las columnas seleccionadas me combine, mejor dicho que me recorra como lo hace la macro crado(como guia la macro que esta grabado). Ajunto el archivo Muchas gracias por si ayuda. Prueba Macro .xlsm

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 5.3k 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.