Saltar al contenido

RowSource dinámico a la derecha (al insertar columnas)


Recommended Posts

publicado

Buenas noches.

Maestros quisiera saber si se puede volver dinámico el rango a la derecha la propiedad RowSource de un ListBox. Es que tengo una base de datos a la cual de vez en cuando se le agregan columnas nuevas y quisiera se ampliara la selección a la derecha como lo hace hacia abajo. Ejemplo 

ListBox1.RowSource = "A4:End(xlToRight)" & Range("A3").End(xlDown).Row

Algo así, no se si se podrá.

publicado

Hola a ambos!

En 3/3/2021 at 17:07 , Jezreel dijo:

Ejemplo 


ListBox1.RowSource = "A4:End(xlToRight)" & Range("A3").End(xlDown).Row

Algo así, no se si se podrá.

Mientras subes una pequeña muestra y asumiendo que lo que deseas es obtener el rango actual

Puedes probar así

ListBox1.RowSource = Range("A4").CurrentRegion.Address(, , , 1)

 

Saludos!

publicado
Hace 25 minutos , Gerson Pineda dijo:

ListBox1.RowSource = Range("A4").CurrentRegion.Address(, , , 1)

Amigo muchisimas  gracias por tu pronta respuesta. Funciona excelente, pero hay un detalle! que al usar esa propiedad ya no me reconoce el ColumnHeads y de verdad que lo necesito porque precisamente al ir incluyendo columnas con su respectiva cabecera quisiera evitar el uso de Labels para las cabeceras del Listbox. Hay alguna manera de solucionar eso?

image.thumb.png.08f9598325b77e305ab88b839a898914.png

 Por cierto lo de Azufre es solo una prueba jajajaja

publicado

Solo es mover una tecla, mira

Range("A1").CurrentRegion.Offset(1).Address(, , , 1)

 

Hace 1 hora, Jezreel dijo:

 Por cierto lo de Azufre es solo una prueba jajajaja

Pues ten cuidado :lol:

 

Saludos!

publicado
Hace 41 minutos , Gerson Pineda dijo:

Range("A1").CurrentRegion.Offset(1).Address(, , , 1)

Que grande Maestro... Funciona perfecto. Muchas Gracias.

Una ultima cosa por favor: resulta que en mi código tengo la necesidad de modificar un dato en 3 hojas. El dato lo tomo al seleccionar un item del ListBox, y al ejecutar el evento "Click" me modifica bien el dato solo en la Hoja "Rubros", pero en las hojas "Ayuda1eraVez" y "AyudaAdicional" no se modifica, creo que porque se desencadena el evento Click y Change del ListBox. Se que hay que interrumpir esos eventos para que se ejecute bien la macro y pueda modificar el dato en las otras 2 hojas, pero de verdad no se como interrumpirlo y volver a retomar el ListBox.RowSource = MiRango.Address. Dejo acá el código:

 

Sub BotonInactivar_Click()
Dim Fila As Integer, Fila2 As Integer, Fila3 As Integer, Final As Integer, Final2 As Integer, Final3 As Integer
On Error Resume Next
If ListBox1.ListIndex = -1 Then
Set MiRango = Empty
MsgBox "Debe seleccionar un Rubro a Inactivar", vbExclamation
    Exit Sub
    End If
Sheets("Rubros").Select
Final = Hoja3.Cells(Rows.Count, "B").End(xlUp).Row
    For Fila = 2 To Final
    If TextBox8.Text = Hoja3.Cells(Fila, 2) Then
        Hoja3.Cells(Fila, 1) = "Inactivo"
        Exit For
    Else
    End If
    Next
Sheets("AyudaAdicional").Select
Final3 = Hoja11.Cells(Rows.Count, "B").End(xlUp).Row
    For Fila3 = 2 To Final3
    If TextBox8.Text = Hoja11.Cells(Fila, 2) Then
        Hoja11.Cells(Fila, 1) = "Inactivo"
    Exit For
    Else
    End If
    Next
Call ElimInacAA
Sheets("Ayuda1eraVez").Select
        Final2 = Hoja10.Cells(Rows.Count, "B").End(xlUp).Row
        For Fila2 = 2 To Final2
        If TextBox8.Text = Hoja10.Cells(Fila, 2) Then
        Hoja10.Cells(Fila, 1) = "Inactivo"
    Exit For
    Else
    End If
    Next
Call ElimInacA1
End Sub

 

publicado

Partiendo de que modificamos ARROZ con los datos más abajo visibles, muestra como debería quedar en cada una de las hojas.

GIF.gif

publicado
Hace 2 minutos , JSDJSD dijo:

Partiendo de que modificamos ARROZ con los datos más abajo visibles, muestra como debería quedar en cada una de las hojas.

Bueno si se modifica algun dato de los Textbox deberian pasar a cada una de las 3 hojas. Pero en realidad lo que mas preocupa es que al darle al boton INACTIVAR RUBRO se suponde que debe colocar la palabra "inactivo" en la columna A de la hoja Rubros, y hacer lo mismo en las hojas Ayuda1eravez y AyudaAdicional. Pero en estas dos ultimas no lo hace.

publicado
Hace 1 minuto , JSDJSD dijo:

A vale, lo único que hay que hacer es que te ponga inactivo en las tres hojas verdad?

Correecto, y si hay algun cambio en los textbox tambin ese cambio debe ir en las 3 hojas

publicado
Hace 3 horas, JSDJSD dijo:

Prueba y comenta a ver si es lo que pretendes..

Oye Maestro muy bueno. Es decir que con el evento doble click en el listbox se solucionaba eso? Fue el unico cambio que hiciste?

publicado
Hace 7 horas, Jezreel dijo:

Es decir que con el evento doble click en el listbox se solucionaba eso? Fue el unico cambio que hiciste?

Lo del evento doble click es para no tener que cambiar la estructura de tu código, también cambie algo que casi siempre NOS pasa cuando hacemos copia y pega como te muestro a continuación.

GIF.gif

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
    • Hola nuevamente, mi duda sigue siendo la ruta, o rutas, finales que quedan, esas que llamas "relativas"; igual por si acaso pon 3 o 4 de esas, tal cual son y/o se ven en el explorador de cada PC y, de ser posible, en cualquier otro "lado" en que las veas.
    • Hola, tal cual se plantea, solamente con macros (VBA); en todo caso, hacerlo a mano o con "CTRL + ;". Saludos.
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.