Macro en excel

Perdona por el dilema en que te pongo.
Tengo dos libros de excel LIBRO1(con una hoja(A)) y LIBRO2(con una hoja(Hoja1)).
En el LIBRO1 esta esta MACRO, y la persona que la diseño no esta localizable.
Me podrías indicar que hace linea por linea.
Al ejecutar la MACRO, tendría que tener un solo LIBRO con las dos HOJAS, o se puede ejecutar estando en libros diferentes.
Gracias anticipadas, y te pido disculpas de nuevo por hacerte esta pedición.
Sub Macro6()
   Do While Range("T1") > 0
    Range("T1").Select
    Selection.End(xlDown).Select
    Selection.ClearContents
    ActiveCell.Offset(0, -1).Range("A1").Select
     Range(Selection, Selection.End(xlToLeft)).Select
    Selection.Copy
    Application.Goto Reference:="R4C6"
    Range("C4").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Range("C4").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Application.Goto Reference:="R1C20"
    Selection.End(xlDown).Select
    ActiveCell.Offset(-1, 1).Range("A1").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
    Application.Goto Reference:="R1C27"
Loop
End Sub

1 Respuesta

Respuesta
1
Aquí trataré de ayudarte:
Si quieres pegas este código en un modulo del BVA y lo leerás mejor
'Incio de la macro
Sub Macro6()
'Do While ES UN BUCLE
'Estos bucles se utilizan cuando queremos repetir la ejecución de unas sentencias
'un número indefinido de veces, siempre que se cumpla una condición.
'En este ejemplo quiere decir que si el rango (celda) T1 es mayor que 0, entonces
   Do While Range("T1") > 0
    'Seleccionar la celda T1
    Range("T1").Select
    'Me lleva a la última fila, la 65536
    Selection.End(xlDown).Select 'la opuesta es ActiveCell.End(xlUp).Select
    'Borra la información que halla seleccionada
    Selection. ClearContents
    'Me ubica en la celda inmediatamente anterior de donde está (a la izquierda)
    ActiveCell.Offset(0, -1). Range("A1").Select  'Si fuera +1, entonces haría lo contrario
    'Esta instrucción me dice que seleccione toda la fila desde la celda donde estoy ubicado
'hacia la izquierda. Ej. si estoy en la G1 y aplico esta macro. Le estoy diciendo que
'seleccione toda la fila DESDE LA A1 HASTA LA G1
     Range(Selection, Selection.End(xlToLeft)).Select 'Lo opuesto es xlToRigth
    'Copia la selección
    Selection. Copy
    'Me ubica en la celda F4
    Application.Goto Reference:="R4C6"
    'Selecciona la celda C4
    Range("C4").Select
    'Pegado Especial (Sólo valores)
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    'Selecciona la celda C4
    Range("C4").Select
    'Igual que la anterior, pero al contrario
    Range(Selection, Selection.End(xlToRight)).Select 'Hace lo contrario xlToLeft
    'Corta o borra lo copiado, pero al darle false estoy diciendo que no lo haga.
    Application.CutCopyMode = False
    'Copia la selección
    Selection.Copy
    'Me lleva a la elda
    Application.Goto Reference:="R1C20"
    Selection.End(xlDown).Select 'Explicado anteriormente
    'Cada vez que aplico esta orden le digo que seleccione cada celda en diagonal hacia arriba
    'Si estoy en la celda A1 me mostrará error, porque, por supuesto, no puede subir más.
    ActiveCell.Offset(-1, 1).Range("A1").Select
    'Pegado Especial (Sólo valores)
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
    'Me ubica en la celda AA1
    Application.Goto Reference:="R1C27"
'Repetir
Loop
'Fin de la macro
End Sub
Public Sub final()
'Practica todas las líneas aquí y te darás cuenta
ActiveCell.Offset(-1, 1).Range("A1").Select
End Sub
Es muy curioso todo este cúmulo de funciones, ¿para qué es?
¿De qué andas?
Espero haberte resuelto tu duda.
FRISHMAR
-------------
Fuente:
http://www.desarrolloweb.com/articulos/567.php

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas