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 todos, Me gustaría preguntar si alguien tiene desarrollada una función tal que cuando el usuario introduzca un número cualquiera, entonces la función devuelva la referencia de la columna asociada a ese número. Algo así, por ejemplo: Function ReferenciarColumnas(numero As Integer) As String Application.ScreenUpdating = False ' Limpiamos los errores anteriores (por si acaso)... Err.Clear ' Tratamos los errores de la función... On Error Resume Next ' Si el número introducido no es válido, entonces... If numero <= 0 Or numero > 16384 Then ' Notificamos al usuario con un mensaje de error... MsgBox "El nú…

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 764 visitas
  2. Hola a todos, Me gustaría que al pulsar una tecla o un atajo de teclado, se le aparezca un mensaje en un MsgBox al usuario de la aplicación ofimática. No sé muy bien cómo plantear el problema. Se me ocurre lo siguiente, pero no funciona: Sub MostrarMensaje() If Application.OnKey Key:="{c}" Then MsgBox "Hola mundo" End Sub Alguien tiene una idea mejor? Gracias.

    • 0

      Reacciones de usuarios

    • 3 respuestas
    • 1.3k visitas
  3. Started by Will_2105,

    Estimados Tengo excel llamado Base que al ejecutar me aparece mi formulario, dentro de ese formulario tengo un botón para abrir un archivo excel(ejemplo), al hacerlo me muestra en la pantalla el archivo abierto, lo que quiero es que se siga apareciendo mi formulario y no estar minimizando el excel que se abrió para seguir en mi form.

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 817 visitas
  4. Buenos dias expertos, dias atras me ayudaron con un formulario que filtra muy bien, ahora necesito pedir una ayuda para que cuando al filtrar y realiza los calculos me haga una condición los que tienen iva muestre con esa y los no los tiene igual sin iva lo que pasa es que la operacion de los calculos saca los totales e iva, en la data hay registros que tiene iva y los que no lo tiene, quiero que al momento de filtrar me salga como esta los que tienen que muestre con iva y los que no lo tienen igual sin iva, pero este ejemplo me saca el iva para todos cosa eso no debe ser asi. por favor espero haber me explicado bien los adjunto el archvio. Cotizaciones.xlsm

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 728 visitas
  5. Buenas, necesito ayuda, no soy capaz de que el color de un cuadro de texto normal, no el que se añade desde la pestaña programador, sea igual al color de una celda que se encuentra en otra hoja, y este cambie automaticamente el color de la celda. una ayudita porfa muchas gracias!

    • 0

      Reacciones de usuarios

    • 7 respuestas
    • 1.5k visitas
  6. Started by Puche,

    BUENO.xlsmHola buenas tardes, Tengo un Excel con un formulario de entradas en el que necesito poder aplicar el autocompletado en los textbox asignados a una columna en concreto de mi base de datos. Es decir, si el textbox de "contacto" por ejemplo, al empezar a escribir un nombre me haga el autocompletado segun el listado de ese encabezado de mi base de datos. Un saludo, Javier

    • 0

      Reacciones de usuarios

    • 6 respuestas
    • 1.1k visitas
    • 1 seguidor
  7. Started by jesuspg,

    Hola a todos, Tengo este evento creado de tipo Worksheet_BeforeDelete: Private Sub Worksheet_BeforeDelete() Application.ScreenUpdating = False Application.StatusBar = "Procedimiento en ejecución..." ' Limpiamos los errores anteriores (por si acaso)... Err.Clear ' Tratamos los errores del evento... On Error Resume Next ' Si la contraseña no coincide, entonces... If FUNCIONES.comprobarContraseña(CONTRASEÑA_HOJA) = False Then ' Copiamos la hoja... ThisWorkbook.ActiveSheet.Copy After:=Sheets(ThisWorkbook.ActiveSheet.Index) ' Y notificamos al usuario con un mensaje de alerta... MsgBox Prompt:="Upps, parece que hubo un error…

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 1.1k visitas
  8. ¡Hola amigos ! En otro Libro tengo el siguiente código que me funciona perfectamente: Private Sub worksheet_change(ByVal Target As Range) If Not Intersect(Range("Ak14:As18"), Target) Is Nothing Then For Each celda In Range("w25:W34") If celda.Value <> "" Then datos = datos + 1 Next If datos > 0 Then Iniciar Else Parar End If End If 'a partir de aquí quiero modificar el código para que, en lugar de ejecutar el WebBrowser4 y reproducir un GIF animado que tengo en una carpeta , dependiendo del contenido del rango W25:W34, me ejecute el control Windows Media Pla…

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 557 visitas
  9. Hola. Estoy trabajando con ComboBox que permiten desplegar y seleccionar opciones en una celda, sin embargo al momento de seleccionar una fila o columna se crea un ComboBox, imposibilitando el copiar y pegar información. Dejo archivo. Lo que quiero es evitar que se creen o se visualicen ComboBox donde no deberían. COMUNIDADES (1).xlsm

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 952 visitas
  10. Started by lsmaniahotmail.com,

    Saludos a todos los profes de esta gran materia , recurro a uds , si alguien puede ayudarme con el error que no me deja avanzar en mi proyecto . se trata de llenar un listBox y de acuerdo al registro seleccionado debe llenar los txt correspondientes , adjunto la programacion utilizada FSE2Nueva_facturacion.xlsm

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 470 visitas
  11. Started by OTOMEVIANEY2,

    ¡Hola! Para cargar un ComboBox en un celda (con valores predeterminados de una lista) estoy utilizando el siguiente código: Private Sub mycombo_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Or KeyCode = 9 Then Range(mycombo.LinkedCell).Offset(1).Select If KeyCode = 13 Then ActiveCell.Offset(-1).Select End If End Sub Private Sub mycombo2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Or KeyCode = 9 Then Range(mycombo.LinkedCell).Offset(1).Select If KeyCode = 13 Then ActiveCell.Offset(-1).Select End Sub Private Sub Worksheet_Selec…

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 886 visitas
  12. Ando Atrapado En Mi Proyecto De Control De Almacén en un pequeño error de que no puedo mostrar mas de diez columnas en mi listbox y no se como solucionar ese error lo deje comentado en el listBox programación dejo el archivo para ver si alguien me puede apoyar y pues si el archivo les sirve os dejo como obsequio INVENTARIO.xlsm

    • 0

      Reacciones de usuarios

    • 12 respuestas
    • 4.7k visitas
    • 1 seguidor
  13. Started by Sanet95,

    Hola, buen día. Tengo la siguiente macro que me ayuda a quitar caracteres especiales y/o acentos. Pero actualmente solo busca en un rango o en celda especifica. Como necesito que lo haga en 70 celdas especifcas (sin seguir algun rango o logica) lo que hago es copair y pegar lo mismo solo cambiando la celda. pero al momento de correr no me deja porque el proyectoes muy largo. ¿Alguno de uds podría por favor sugerirme alguna otra manera? Quedo pendiente y nuevamente muchas gracias Dejo el código: Sub Quita_acentos() '(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Auto run when user hits save or closes Excel.…

    • 0

      Reacciones de usuarios

    • 4 respuestas
    • 5.4k visitas
  14. Hola Masters! Estoy desarrollando una macro que debe copiar y pegar un rango de datos muy grande de la Hoja "BD" hacia la Hoja "DATOS GRAL" del mismo archivo pero por alguna razón cuando ejecuto la macro se traba y me aparece "Excel no responde". El rango de datos es de apróx 639,360 celdas. El código que uso es este: Sheets("BD").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("DATOS GRAL").Select Range("A4").Select ActiveSheet.Paste Nota: Si lo hago de forma manual el copiar y pegar los mis…

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 860 visitas
  15. Started by jeaa,

    Buenos dias expertos, tengo un formulario que funcion bien la busqueda, la unica dificultad es que cuando ingreso un numero que no es el correlivo lo filtra todas las concidencia y no quiero que suceda eso que haga la busqueda de facturas exactos si el correlativo no corresponde simplemente que no muestre nada. Adjunto el link del archivo: https://drive.google.com/file/d/1lms6MCWIPLoRTb1ySTw_pss9q6fKDUhd/view?usp=sharing

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 626 visitas
  16. Started by SALAVERRINO,

    Buenas tardes a los integrantes de este prestigioso foro, en ocasión recurro a Uds, para que brinden su apoyo con la siguiente macro, a la cual quiero que en la barra de estado cuente la cantidad registros que se encuentran en la pestaña PLANILLA que empieza en la celda AZ8 hasta la AZ2507 y por cada archivo que van generando en PDF indique 1 de 19, 2 de 19, .... hasta llegar a 19 de 19, desde ya agradezco su apoyo y colaboración. Sub ElegirAccion() Dim i As Integer Dim intInicial As Integer Dim intFinal As Integer Dim intConsecutivo As Integer Dim srtTitulo As String Dim Ruta As String Dim nombre As String Dim pass As String, hoja As St…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 1.2k visitas
  17. Sub CopiarCeldas() 'Defini objetos Dim wbDestino As Workbook, _ wsOrigen As Excel.Worksheet, _ wsDestino As Excel.Worksheet, _ rngOrigen As Excel.Range, _ rngDestino As Excel.Range 'indicio el libro de Excel destino Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "/Datos - Abastecimientos.xlsm") 'Activar este libro ThisWorkbook.Activate 'Indicar las hojas de origen y destino Set wsOrigen = Worksheets("Other") Set wsDestino = wbDestino.Worksheets("Datos") 'Indicar la celda de origen y destino Const celdaOrigen = "A1" Const celdaDestino = "A1" 'Inicializar los rangos de origen y destino Set rngOrigen = wsOrigen.Range(celdaOrigen) Set…

    • 0

      Reacciones de usuarios

    • 8 respuestas
    • 1.3k visitas
  18. Started by jesuspg,

    Hola compañeros, Mi problema es el siguiente: "Tengo una macro que ejecuta un código cualquiera sobre varias hojas, y entre ello está inmovilizar los paneles de una hoja. El problema es que yo no quiero que se inmovilicen los paneles de la ventana activa, sino de la ventana de la hoja que yo le indique. Esto se debe a que introduzco la sentencia 'ActiveWindow.FreezePanes = true' Entonces, mi pregunta es: ¿No existe otra sentencia para inmovilizar paneles que no sea la anterior? Es decir, algo así como 'ThisWorkbook.Worksheets("Hoja1").FreezePanes = true'. Ya probé con la sentencia anterior, pero obviamente no me deja dado que FreezePanes es u…

    • 0

      Reacciones de usuarios

    • 6 respuestas
    • 2.1k visitas
  19. Started by kai7as,

    Hola buen día, favor alguien podría ayudarme con una breve explicación, del porque cuando ya convierto un numero a texto no lo imprime en la celda... me falta algún paso por hacer?? de antemano muchas gracias si pueden ayudarme. Sub prueba() Dim entero As Long entero = 212341234 Dim str As String str = CStr(entero) QR.Range("k1").Value = str Debug.Print str End Sub Muchas gracias Saludos, Prueba.wmv

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 1.1k visitas
  20. Started by Puche,

    Hola buenas tardes, Tengo un excel con un UseForm el cual me gustaría poder imprimir en horizontal. Tengo creado un botón de imprimir que tiene un código sencillo que me imprime pero en posición vertical y no se visualizan todos los datos que deseo Private Sub bt_imprimir_Click() FrmListBoxProductos.PrintForm End Sub Mi intencion inicial es poder imprimir el Useform por completo pero si no es posible me basta con poder imprimir el ListBox con las cabeceras Espero me puedan ayudar Saludos, BUENO.xlsm

    • 0

      Reacciones de usuarios

    • 7 respuestas
    • 2.1k visitas
  21. Started by lucas_545,

    Hola. El archivo 1 contiene un hipervínculo que abre el archivo 2. El archivo 2 tiene un userform que al cerrarse guarda el archivo y lo cierra qudando activo el archivo 1. Teniendo el archivo 1 abierto, abro el archivo 2 haciendo click en el archivo funciona todo bien. El problema: cuando abro el archivo 2 desde el hipervínculo, al cerrar el userform se guarda y cierra el archivo 2. Ahí aparece un cartel en el archivo 1. Muchas gracias por atender mi consulta. Saludos Archivo 2.xlsb Archivo 1.xlsb

    • 0

      Reacciones de usuarios

    • 2 respuestas
    • 960 visitas
  22. Hola buenos días a todos , yo aquí sigo trabajando con mi proyecto, en el Modulo 7 he generado un código, que me permite copiar y pegar un rango de datos en un objeto chart exportarlo de forma constante al mismo archivo, insertar, copiar y borrar esa imagen para poder adjuntar a una msg de WhatsApp. Si bien realiza todo el procedimiento tengo dos problemas... uno que si bien yo defino el rango, "Hoja1.Range("A1:F46").Select" al hacerme todo el procedimiento me adjunta 6 hojas en formato imagen en whats app y debería ser solo la primera con datos. y otro detalle es que me gustaría si me pueden ayudar a encontrar una forma que ese rango sea variab…

    • 0

      Reacciones de usuarios

    • 0 respuestas
    • 1.9k visitas
  23. Started by Micky Mendoza,

    Muy buenos días a todos. Estoy realizando un formulario para mi trabajo y necesito ayuda con algunos puntos específicos. Primero, quisiera saber como puedo hacer para que mis txt_purchase y txt_date_corte se ingresen con el formato de las celdas C8 y C9. Segundo, como puedo hacer para que cada vez que filtre lo que escriba en mi txt_busqueda, en mi LISTA (listBox) se muestren todas las columnas que especifico en el código (+ de 10). Tercero, actualmente tengo que mi LISTA (listbox) me muestra todas las columnas de mi tabla, pero en realidad solo quiero que muestre las mismas columnas que en el segundo punto. Cuarto, quiero poner labels encima de l…

    • 0

      Reacciones de usuarios

    • 4 respuestas
    • 1.1k visitas
  24. Started by renato13,

    Buenas noches amigos de AyudaExcel me conseguí código de la Web para enviar la hoja activa de excel pero hay un problema o error al abrirse el inputbox para tipear el nombre de la hoja y querer cancelar la acción con el botón "Cancelar" el envío la macro no se sale y continúa quisiera que al dar cancelar se salga de la macro; en este código no se diferencia la acción de de cada uno de los botones ya que da lo mismo aceptar o cancelar. Gracias por su ayuda Option Explicit ' Sub EviarHojaEmail() ' Dim NombreArchivo As String Dim RutaTemporal As String Dim Mensaje As String ' On Error Resume Next ' Mensaje = "Estás a punto de enviar la hoja activa por…

    • 0

      Reacciones de usuarios

    • 5 respuestas
    • 1.7k visitas
  25. Hola, hice esta pequeña macro para ingresar algunos datos de negocio. (solo hasta la columna V) ya que las columnas que siguen a la derecha las modificare mediante otra macro. Actualmente lo que aparece en mi txt_code es un número que genero automáticamente con la ayuda de la función "=MAX(Tabla1[CODE])+1" que tengo establecido en la celda "B1" quisiera saber si dicho número que aparece en mi txt_code se puede generar mediante algún comando de macro puro, para poder eliminar la función de arriba. Gracias por su atención. ingresarDATOS.xlsm

    • 0

      Reacciones de usuarios

    • 1 respuesta
    • 1.2k visitas
    • 1 seguidor

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.