Inversión de columna VBA

Resuelto
texastina Mensajes publicados 55 Estado Miembro -  
texastina Mensajes publicados 55 Estado Miembro -
Hola,

Quisiera saber si es posible invertir el contenido de varias columnas gracias al VBA.
Ej: Columna D ==> Columna B
Columna B ==> Columna C
Columna C ==> Columna D

Espero haber sido lo suficientemente clara :)

Gracias por tus respuestas :)

4 respuestas

  1. Maurice
     
    Hola
    Yo prefiero mover la columna
    ejemplo:
     Sub DeplaceCol() Columns(4).Cut Columns(2).Insert Shift:=xlToRight Range("A1").Select End Sub 

    A+
    Maurice
    2
    1. texastina Mensajes publicados 55 Estado Miembro
       
      Gracias por tu respuesta, las he reproducido y funciona :)
      Elijo tu método, lo encuentro más simple

      Gracias a ustedes, ¡buen día! :)
      0
  2. JvDo Mensajes publicados 1924 Fecha de registro   Estado Miembro Última intervención   859
     
    Hola,

    Sí, es posible. Incluso puedes limitarte al primer desplazamiento: columna D frente a columna B.
    Las otras columnas estarán automáticamente en el lugar correcto.

    Si además de tu pregunta quieres saber cómo hacerlo, utiliza el grabador de macros y tendrás el código.

    Saludos cordiales
    1
  3. diablo13800 Mensajes publicados 3469 Fecha de registro   Estado Miembro Última intervención   1 872
     
    Hola,

    Sí, eso es posible gracias a la secuencia de comandos copiar y pegar.

    En tu caso:
    dim ejemplo as Range // Declaración de tu campo de acción ejemplo = Range("A1;E600") // Selección de un rango amplio, a adaptar según la longitud de tus columnas. ejemplo.Column(4).select // Selecciona la columna D Selection.copy // Copia la columna seleccionada ejemplo.Column(5).select // Selecciona la columna E ActiveSheet.Paste // Pega lo que se ha copiado en la columna seleccionada


    Espero haber sido lo suficientemente claro, a hacerlo según tu deseo :)
    Manténme informado si hay algo que no entiendes.
    0
    1. texastina Mensajes publicados 55 Estado Miembro
       
      Gracias por tu respuesta :)
      ¡Has sido clara, he entendido y lo he reproducido en mi tabla!

      Después también he reproducido el método de Maurice y lo encuentro más sencillo :)
      0
  4. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
     
    Hola
    intenta:

    Opción Explícita
    '------------------
    Sub bcd_cdb()
    Dim Derlig As Integer, T_in, T_out, cptr As Integer

    Application.ScreenUpdating = False
    Derlig = Cells.Find(what:="*", searchdirection:=xlPrevious).Row
    T_in = Range("B1:D" & Derlig)
    ReDim T_out(1 To Derlig, 1 To 3)
    For cptr = 1 To UBound(T_in)
    T_out(cptr, 1) = T_in(cptr, 3) '
    T_out(cptr, 2) = T_in(cptr, 1) '
    T_out(cptr, 3) = T_in(cptr, 2) '
    Next
    Range("B1").Resize(UBound(T_in), 3) = T_out

    End Sub


    --
    Michel
    0
    1. texastina Mensajes publicados 55 Estado Miembro
       
      Hola Mchel
      Gracias por tu respuesta, eso también funciona :)
      0