Macro copiar a otra hoja

Prosac disculpa pero tengo una pregunta tengo una macro pra copiar a otra hoja pero en excel 2010 no jala me manda varios errores ya sea poniéndola en un command booton o insertando un modulo la es la siguiente y me marca en la palabre libre =
O me dice que la variable no ha sido declarada o me dice que la librería no existe a continuación pongo la macro y sub rayo donde me marca la primera vez, o me dice no se puede encontrar el proyecto o biblioteca
Tengo que abrirlo en office 2007 o 2010 en el primero no tengo problema pero el segundo si me urge espero me puedas ayudar gracias de ante mano.
Sub basedatos()
Range("I5").Value = Range("I5").Value + 1
libre = Sheets("HOJA2").Range("b65536").End(xlUp).Row + 1
Sheets("Formato Manto").Range("C10").Copy
Sheets("HOJA2").Cells(libre, 1) = ActiveSheet.Range("C10")  "me subraya en amarillo aquí"
Sheets("HOJA2").Cells(libre, 2) = ActiveSheet.Range("C13") "aquí
Sheets("HOJA2").Cells(libre, 3) = ActiveSheet.Range("C14")
Sheets("HOJA2").Cells(libre, 4) = ActiveSheet.Range("C15")
Sheets("HOJA2").Cells(libre, 5) = ActiveSheet.Range("C16")
Sheets("HOJA2").Cells(libre, 6) = ActiveSheet.Range("I25")
Sheets("HOJA2").Cells(libre, 7) = ActiveSheet.Range("A25")
Sheets("HOJA2").Cells(libre, 8) = ActiveSheet.Range("H8")
Sheets("HOJA2").Cells(libre, 9) = ActiveSheet.Range("C34")
Sheets("HOJA2").Cells(libre, 10) = ActiveSheet.Range("I5")
Application.CutCopyMode = False
MsgBox ("DATOS GUARDADOS EXITOSAMENTE :)")
End Sub

1 Respuesta

Respuesta
1
No tengo Excel 2010 para probar lo que dices. Sin embargo te sugiero algunas pruebas:
Lo primero es saber si tienes Option Explicit en el módulo donde está el procedimiento declarado. Es una buena práctica pues te obliga a declarar las variables y evita confusiones cuando te equivocas en el nombre de variables. Sin embargo te obliga a declararlas.
En tu caso bastaría con añadir al principio de tu procedimiento la declaración:
Dim libre as Integer
Por otro lado no sé para que te sirve copiar de la hoja "Formato Manto" si no haces nada con ello y así evitas fijar el modo CutCopy, salvo que lo hagas por otros motivos. El siguiente código hace lo mismo que el tuyo de forma más clara a mi modo de ver. Si tu código solo debe funcionar desde una hoja concreta, puedes asegurarte de ello con la instrucción:
WorkSheets("Mihoja"). Activate
Bueno el código así, quedaría (donde MiHoja es la hoja inicial)
Sub BaseDatos()
Dim libre As Integer
Worksheets("MiHoja").Activate 'hoja inicial desde donde copio los datos
Range("I5").Value = Range("I5").Value + 1
With Sheets("HOJA2")
   libre = .Range("b65536").End(xlUp).Row + 1
   'Sheets("Formato Manto").Range("C10").Copy esto no se usa luego
  .Cells(libre, 1) = ActiveSheet.Range("C10") 'me subraya en amarillo aquí"
  .Cells(libre, 2) = ActiveSheet.Range("C13") 'aquí
  .Cells(libre, 3) = ActiveSheet.Range("C14")
  .Cells(libre, 4) = ActiveSheet.Range("C15")
  .Cells(libre, 5) = ActiveSheet.Range("C16")
  .Cells(libre, 6) = ActiveSheet.Range("I25")
  .Cells(libre, 7) = ActiveSheet.Range("A25")
  .Cells(libre, 8) = ActiveSheet.Range("H8")
  .Cells(libre, 9) = ActiveSheet.Range("C34")
  .Cells(libre, 10) = ActiveSheet.Range("I5")
  ' Application.CutCopyMode = False no veo para que te hace falta
  MsgBox ("DATOS GUARDADOS EXITOSAMENTE :)")
End With
End Sub
Te dejo tus líneas comentadas aunque creo que no son necesarias. Descoméntalas si te sirven por cualquier otro motivo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas