variable una ultima seleccionar rango que pego pegar para otra macro hoja hasta especificas desde datos cumplan copiar condicion con celdas celda asignar anterior activa abajo excel vba excel-vba

una - seleccionar hoja excel vba



¿Cómo puedo copiar columnas de una hoja a otra con VBA en Excel? (5)

Intento escribir una macro que copie el contenido de la columna 1 de la hoja 1 a la columna 2 en la hoja 2. Así es como se ve el módulo pero, cuando lo ejecuto, obtengo

Error de tiempo de ejecución 9, Subíndice fuera de rango.

Sub OneCell() Sheets("Sheet1").Select ''select column 1 A1'' Range("A1:A3").Select Selection.Copy Range("B1:B3").Select ActiveSheet.Paste Sheets("Sheet2").Select Application.CutCopyMode = False End Sub


No estoy seguro de por qué tendrías el subíndice fuera del alcance a menos que tus hojas no se llamaran en realidad Sheet1 o Sheet2 . Cuando renombro mi Sheet2 a Sheet_2 , obtengo el mismo problema.

Además, parte de tu código parece estar equivocado (lo pegas antes de seleccionar la segunda hoja). Este código funciona bien para mí.

Sub OneCell() Sheets("Sheet1").Select Range("A1:A3").Copy Sheets("Sheet2").Select Range("b1:b3").Select ActiveSheet.Paste End Sub

Si no desea saber cómo se llaman las hojas, puede usar índices enteros de la siguiente manera:

Sub OneCell() Sheets(1).Select Range("A1:A3").Copy Sheets(2).Select Range("b1:b3").Select ActiveSheet.Paste End Sub


Seleccionar a menudo es innecesario. Prueba esto

Sub OneCell() Sheets("Sheet2").range("B1:B3").value = Sheets("Sheet1").range("A1:A3").value End Sub


Si ha combinado celdas,

Sub OneCell() Sheets("Sheet2").range("B1:B3").value = Sheets("Sheet1").range("A1:A3").value End Sub

que no copia las celdas como son, donde el código anterior se copia exactamente como se ven (fusionadas).


Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range, r As Range Set rng = Intersect(Target, Range("a2:a" & Rows.Count)) If rng Is Nothing Then Exit Sub For Each r In rng If Not IsEmpty(r.Value) Then r.Copy Destination:=Sheets("sheet2").Range("a2") End If Next Set rng = Nothing End Sub


Lo siguiente funciona bien para mí en Excel 2007. Es simple y realiza una copia completa (conserva todo el formato, etc.):

Sheets("Sheet1").Columns(1).Copy Destination:=Sheets("Sheet2").Columns(2)

"Columnas" devuelve un objeto Range, por lo que está utilizando el método "Range.Copy". "Destino" es una opción para este método; si no se proporciona, el valor predeterminado es copiar en el búfer de pegado. Pero cuando se proporciona, es una forma fácil de copiar.

Al igual que cuando se copian elementos manualmente en Excel, el tamaño y la geometría del destino deben ser compatibles con el rango que se está copiando.