Elegir dos columnas para copiar

Con esta macro

Sub BSP()
    Dim vuf&, R As Range
    vuf = Range("p" & Rows.Count).End(xlUp).Row
    Set R = Union(Range("p3:s" & vuf), Range("f3:i" & vuf), Range("d3:d" & vuf), Range("v3:w" & vuf))
    R.Select
    Selection.Copy
End Sub

Selecciono columnas fijas a copiar, pero lo que necesito es seleccionar dos columnas con datos visibles, por defecto a la columna E que de encabezado tengo BOLETO N° desde E3, y que asimismo poder tener la opcion de elegir una otra columna más, seleccionando a partir de la fila 3 , de cualquiera de los encabezados BOLIVIANOS, DOLARES , NETO BS, NETO USD, TAX BOB, TAX USD  .

Mucha gracias por su atención,

Jesús

1 respuesta

Respuesta
1

Ejecuta la siguiente macro, te va a pedir que selecciones una celda, por defecto, selecciona la celda E2, si quieres la columna E, simplemente presiona enter; si quieres otra columnas, entonces selecciona una celda de la columna que deseas y presiona enter.

Después te pide que selecciones la segunda celda, por defecto, selecciona la celda L2, si quieres la columna L, presiono enter o selecciona una celda de la columna que quieras y presiona enter.

La macro se ejecuta.

Sub BSP()
    Dim vuf&, R As Range, r1, r2, c1, c2
    '
    vuf = Range("p" & Rows.Count).End(xlUp).Row
    On Error Resume Next
    With Application
        Set r1 = .InputBox("Selecciona encabezado 1", Default:=Range("E3").Address, Type:=8)
        If r1 Is Nothing Then c1 = "P" Else c1 = r1.Column
        Set r2 = .InputBox("Selecciona encabezado 2", Default:=Range("L3").Address, Type:=8)
        If r2 Is Nothing Then c2 = "P" Else c2 = r2.Column
    End With
    On Error GoTo 0
    '
    Set R = Union(Range("p3:s" & vuf), Range("f3:i" & vuf), _
                  Range("d3:d" & vuf), Range("v3:w" & vuf), _
                  Range(Cells(3, c1), Cells(vuf, c1)), _
                  Range(Cells(3, c2), Cells(vuf, c2)))
    R.Select
    Selection.Copy
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Te cuento que elige todas las columnas, por más que elija la que quiero

Saludos

Jesús

Entonces no entendí qué es lo que quieres seleccionar.

Tu macro selecciona las columnas de la P:S, F:I, D:D y V:W

¿Adicional a esas columnas quieres agregar 2 columnas?

O quieres quitar de la selección todas las columnas y solamente dejar 2 columnas.

¿Puedes explicar con más claridad qué columnas quieres?

Estimado Dante lo que quiero es que me pregunte que columna seleccionar la o el encabezado mediante un combobox donde estén los títulos de las columnas BOLIVIANOS, DOLARES, NETO BS, NETO USD, TAX BOB, TAX USD, FEE BOB Y FEE USD, y a la columna que elijo por defecto seleccione solo la columna E que tiene como titulo BOLETO N° y seleccione la columna elegida, digamos que elijo TAX BOB solo seleccione la columna E y la columna P, aclaro que estos datos los filtro por fecha o por código, y lo que quiero es que seleccione la columna BOLETO sus datos y la columna seleccionada.

Gracias

No me queda claro.

Entonces esto que pusiste en tu macro:

Set R = Union(Range("p3:s" & vuf), Range("f3:i" & vuf), Range("d3:d" & vuf), Range("v3:w" & vuf))

Ya no lo quieres?


¿Ahora lo que quieres es que seleccione siempre la columna E y una columna 2 que vas a seleccionar en un combobox?

Y en dónde tienes el combobox, ¿en la hoja o en un userform?

¿El combo es un controlActiveX o un control de formulario?

Así como aparece ese cuadro de dialogo, así quisiera que me pregunte que columna elegir

Y ese código que puse es para indicar que solo elijo lo que esta visible porque utilizo filtros en mi hoja .

Es un ejemplo mio 

y la verdad no seria mala idea mediante un useform que tenga un combobox con los encabezados de las columnas y al dato elegido seleccionar los datos filtrados de la columna E que es la columna por defecto a copiar y asi mismo seleccionar lo elegido mediante el combobox, que te parece?

Pero el cuadro de dialogo que te puse es solamente una caja de texto, no es un combobox.

En ese tipo de dialogo no se puede poner un combobox.

Tienes que crear un combobox en un userform o un combobox de controlactiveX en la hoja, pero me tienes que decir cómo lo vas a crear.

Sigo sin entender qué columnas quieres.

Tampoco entiendo a qué te refieres con " solo elijo lo que esta visible". Si tienes filtros o no tienes filtros, excel en automático te copia lo visible.

O sea digamos por ejemplo filtro de la columna D los OB y así solo estará visible los datos con esa selección, y se me ocurre que mediante un botón de controles de formulario llame a un cuadro combinado de controlactiveX que tenga ya cargados los nombres de los encabezados de la fila 2 a partir de la columna L hasta la S y al elegir de este cuadro combinado por ejemplo NETO BS seleccione para copiar los datos de la columna E que si o si tiene que elegirse y a la vez lo seleccione los datos de la columna N y se cierre el cuadro combinado y la selección este lista para pegar donde sea necesario.

Gracias y disculpa por no ser más explicito.

Jesús

 H o  l  a:

No te preocupes, le sigo hasta que quede resuelto.

No entiendo a qué te refieres con esto: "un botón de controles de formulario llame a un cuadro combinado de controlactiveX "

Con el botón llamas a una macro, no entiendo cómo llamar a un "cuadro combinando de controlactiveX".

Lo que quieres es un botón que llame un Userform, y dentro del userform tengas un combobox con las columnas precargadas.

O directamente en la hoja pones un CotrolActiveX. En este caso no necesitas un botón.

Gracias por la paciencia de verdad, y si tienes razón eso es lo que quiero  "Lo que quieres es un botón que llame un Userform, y dentro del userform tengas un combobox con las columnas precargadas."

y con eso poder seleccionar la columna a elegir

Gracias

Jesús

Disculpas en el combobox quiero los encabezados de las columnas y una vez elegido el encabezado, recién seleccionar esa columna.

H o l a:

Realiza los siguientes pasos:

  1. Crea un userform con un ComboBox1
  2. Dentro del userform pon el siguiente código:
    Private Sub ComboBox1_Change()
    'Por.Dante Amor
        Application.CutCopyMode = False
        If ComboBox1 = -1 Or ComboBox1 = "" Then Exit Sub
        u = Range("P" & Rows.Count).End(xlUp).Row
        c = ComboBox1.ListIndex + Columns("L").Column
        Set r = Union(Range("E3:E" & u), Range(Cells(3, c), Cells(u, c)))
        r.Copy
        'Unload Me
    End Sub
    '
    Private Sub UserForm_Activate()
    'Por.Dante Amor
        [E2].Activate
        For i = Columns("L").Column To Columns("S").Column
            ComboBox1.AddItem Cells(2, i)
        Next
    End Sub
  3. En un módulo pon el siguiente código:
    Sub abrir()
        UserForm1.Show
    End Sub
  4. Ahora crea un botón en la hoja:

    Sigue las Instrucciones para un botón y ejecutar la macro

    1. Abre tu libro de Excel
    2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
    3. En el menú elige Insertar / Módulo
    4. En el panel del lado derecho copia la macro
    5. Ahora para crear un botón, puedes hacer lo siguiente:
    6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
    7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
    8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
    9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: abrir
    10. Aceptar.
    11. Para abrir el userform dale click a la imagen.


Abre el formulario, cada que cambies el dato del combobox, en automático se seleccionarán 2 columnas, la E y la que selecciones en el combo.

Cierra el formulario para salir, pasar a la hoja y pegar la información donde desees.


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas