Skip to main content

¿Cómo mover rápidamente elementos entre dos cuadros de lista en Excel?

Author: Sun Last Modified: 2025-06-04

¿Alguna vez has intentado mover los elementos de un cuadro de lista a otro, como se muestra en la captura de pantalla a continuación? Aquí hablaré sobre esta operación en Excel.

a screenshot showing the listboxes before moving items a screenshot of an arrow a screenshot showing the listboxes after moving items

Mover elementos entre cuadros de lista


Mover elementos entre cuadros de lista

No hay una función integrada que pueda ayudarte a completar el trabajo, pero tengo un código VBA que puede hacerlo.

1. Primero, necesitas crear una lista de datos que se mostrarán como los elementos en los cuadros de lista en una nueva hoja llamada Admin_Lists.

a screenshot of the source data

2. Luego selecciona estos datos y ve al cuadro de nombres para asignarles un nombre: ItemList. Ver captura de pantalla:

a screenshot of naming the source data in the Name box

3. Luego, en una hoja que contendrá los dos cuadros de lista, haz clic en Desarrollador > Insertar > Cuadro de Lista (Control ActiveX), y dibuja dos cuadros de lista. Ver captura de pantalla:

a screenshot of selecting the List Box control under the Developer tab a screenshot of the right arrow a screenshot showing two created list boxes

Si la pestaña Desarrollador está oculta en tu cinta, ¿Cómo mostrar/visualizar la pestaña Desarrollador en la cinta de Excel 2007/2010/2013? Este artículo te dirá cómo mostrarla.

4. Luego haz clic en Desarrollador > Insertar > Botón de Comando (Control ActiveX), y dibuja cuatro botones entre los dos cuadros de lista. Ver captura de pantalla:

a screenshot of selecting command button control a screenshot of a right arrow 1 a screenshot showing the created command buttons

Ahora cambia el nombre de los cuatro botones de comando con nuevos nombres.

5. Selecciona el primer botón de comando, haz clic en Propiedades, y en el panel Propiedades, dale el nombre BTN_moveAllRight, y escribe >> en el cuadro de texto junto a Título. Ver captura de pantalla:

a screenshot showing how to changing the properties of the command button

6. Repite el paso 5 para cambiar el nombre de los últimos tres botones de comando con los siguientes nombres, y también escribe las diferentes flechas en los títulos. Ver captura de pantalla:

BTN_MoveSelectedRight

BTN_moveAllLeft

BTN_MoveSelectedLeft

a screenshot of the second command button after changing the properties a screenshot of the third command button after changing the properties a screenshot of the fourth command button after changing the properties

7. Haz clic derecho en el nombre de la hoja que contiene los cuadros de lista y los botones de comando, y selecciona Ver Código desde el menú contextual. Ver captura de pantalla:

a screenshot of opening the VBA code editor

8. Copia y pega el siguiente código macro en el script del Módulo, luego guarda el código y cierra la ventana de Microsoft Visual Basic para Aplicaciones. Ver captura de pantalla:

VBA: Mover elementos entre dos cuadros de lista

Private Sub Worksheet_Activate()
'UpdatebyExtendoffice20171117
    Dim xCell As Range
    Dim xRg As Range
    Set xRg = Sheets("Admin_Lists").Range("ItemList")
    Me.ListBox1.Clear
    Me.ListBox2.Clear
    With Me.ListBox1
        .LinkedCell = ""
        .ListFillRange = ""
        For Each xCell In xRg
            If xCell <> "" Then
                .AddItem xCell.Value
            End If
        Next xCell
    End With
    Me.ListBox1.MultiSelect = fmMultiSelectMulti
    Me.ListBox2.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub BTN_MoveSelectedLeft_Click()
    Call moveSigle(Me.ListBox2, Me.ListBox1)
End Sub

Private Sub BTN_MoveSelectedRight_Click()
    Call moveSigle(Me.ListBox1, Me.ListBox2)
End Sub

Private Sub BTN_moveAllLeft_Click()
    Call moveAll(Me.ListBox2, Me.ListBox1)
End Sub

Private Sub BTN_moveAllRight_Click()
    Call moveAll(Me.ListBox1, Me.ListBox2)
End Sub

Sub moveAll(xListBox1 As Object, xListBox2 As Object)
    Dim I As Long
    For I = 0 To xListBox1.ListCount - 1
        xListBox2.AddItem xListBox1.List(I)
    Next I
    xListBox1.Clear
End Sub

Sub moveSigle(xListBox1 As Object, xListBox2 As Object)
    Dim I As Long
    For I = 0 To xListBox1.ListCount - 1
        If I = xListBox1.ListCount Then Exit Sub
        If xListBox1.Selected(I) = True Then
            xListBox2.AddItem xListBox1.List(I)
            xListBox1.RemoveItem I
            I = I - 1
        End If
    Next
End Sub

a screenshot showing how to use the VBA code

9. Luego ve a otra hoja y regresa a la hoja que contiene los cuadros de lista; ahora puedes ver que los datos de la lista se han cargado en el primer cuadro de lista. Y haz clic en los botones de comando para mover los elementos entre los dos cuadros de lista.

a screenshot showing the source data in one list box after running the VBA code

Mover selección

a screenshot of moving items from one list box to another one by one a screenshot of the arrow a screenshot showing two items have been moved to the right list box

Mover todo

a screenshot of marking which command button can be used to move all items from one list to another at the same time a screenshot of arrow 2 a screenshot showing all items are moved from one list box to another at the same time

Las mejores herramientas de productividad para Office

🤖 Kutools AI Aide: Revoluciona el análisis de datos basado en: Ejecución inteligente | Generar código | Crear fórmulas personalizadas | Analizar datos y generar gráficos | Invocar Funciones mejoradas
Funciones populares: Buscar, resaltar o marcar duplicados | Eliminar filas en blanco | Combinar columnas o celdas sin perder datos | Redondear...
Super BUSCARV: Búsqueda por varios criterios | Búsqueda de varios valores | Búsqueda en varias hojas | Coincidencia difusa....
Lista desplegable avanzada: Crea rápidamente una lista desplegable | Lista desplegable dependiente | Lista desplegable de selección múltiple....
Administrador de columnas: Agregar un número específico de columnas | Mover columnas | Alternar el estado de visibilidad de columnas ocultas | Comparar rangos y columnas...
Funciones destacadas: Cuadrícula de enfoque | Vista de diseño | Barra de fórmulas mejorada | Administrador de Libro de trabajo y Hoja de cálculo | Biblioteca de AutoTexto | Selector de fechas | Combinar Datos | Cifrar/Descifrar celdas | Enviar correo electrónico por lista | Super Filtro | Filtro especial (filtrar celdas con fuente en negrita/cursiva/tachado...)...
Top15 conjuntos de herramientas:12 herramientas de texto (Agregar texto, Eliminar caracteres específicos, ...) | Más de50 tipos de gráficos (Diagrama de Gantt, ...) | Más de40 fórmulas prácticas (Calcular edad basada en la fecha de nacimiento, ...) |19 herramientas de inserción (Insertar código QR, Insertar imagen desde ruta, ...) |12 herramientas de conversión (Convertir a palabras, Conversión de moneda, ...) |7 herramientas para combinar y dividir (Combinar filas avanzado, Dividir celdas, ...) | ... y más

Potencia tus habilidades en Excel con Kutools para Excel y experimenta una eficiencia sin precedentes. Kutools para Excel ofrece más de300 funciones avanzadas para aumentar la productividad y ahorrar tiempo. Haz clic aquí para obtener la función que más necesitas...


Office Tab lleva la interfaz de pestañas a Office y facilita mucho tu trabajo

  • Habilita la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abre y crea varios documentos en nuevas pestañas de la misma ventana, en lugar de nuevas ventanas.
  • ¡Aumenta tu productividad en un50% y reduce cientos de clics de ratón cada día!